我正在尝试比较运行时变量是否在现在以及从现在开始一分钟内。这是代码:
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/