我正在尝试比较运行时变量是否在现在和一分钟后。这是代码:
if (RunTime.ToUniversalTime() >= now.ToUniversalTime() &&
RunTime.ToUniversalTime() < now.AddMinutes(1).ToUniversalTime())
{
//Do Stuff
}
然而,这比我预期的要早一分钟评估为真。例如,如果我的运行时间为 9:30,那么从 9:29 到 9:30 的计算结果为真,而不是 9:30 - 9:31。我在这里错过了什么?我对代码的理解是,当运行时间大于或等于现在且小于现在加一分钟时,它的计算结果为真。
最佳答案
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/