我正在尝试比较运行时变量是否在现在以及从现在开始一分钟内。这是代码:

if (RunTime.ToUniversalTime() >= now.ToUniversalTime() &&
    RunTime.ToUniversalTime() < now.AddMinutes(1).ToUniversalTime())
{
    //Do Stuff
}


但是,这比我预期的要早一分钟。例如,如果我的运行时间为9:30,则它从9:29到9:30的评估结果为true,而不是9:30-9:31。我在这里想念什么?我理解代码的方式是,当运行时大于或等于现在且小于现在加一分钟时,它将评估为true。

最佳答案

RunTime.ToUniversalTime() >= now.ToUniversalTime() &&
RunTime.ToUniversalTime() < now.AddMinutes(1).ToUniversalTime()


让我们重写这种情况:

now.ToUniversalTime() <= RunTime.ToUniversalTime() &&
now.ToUniversalTime() > RunTime.AddMinutes(-1).ToUniversalTime()


因此,当RunTime为9:30时,条件应为从RunTime.AddMinutes(-1)(9:29)排除到RunTime(9:30)包括在内的条件。就像您说的那样。

如果您从9:30到9:31满足该条件,则应使用其他条件:

now.ToUniversalTime() >= RunTime.ToUniversalTime() &&
now.ToUniversalTime() < RunTime.AddMinutes(1).ToUniversalTime()

关于c# - 在C#中比较DateTimes会产生意外结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36776031/

10-10 14:27