c# - 在 C# 中比较 DateTimes 产生意想不到的结果

标签 c# datetime-comparison

我正在尝试比较运行时变量是否在现在和一分钟后。这是代码:

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/

相关文章:

java - 检查时间是否在最小和最大范围内

c# - 无法将 List<KeyValuePair<...,...>> 转换为 IEnumerable<object>?

c# - C# : How to Maximize Parallelism 中的并行分区算法

c# - 在 WPF 中同时验证多个控件

安卓手机静音时间对比

C# 检查两个日期时间之间是否有一分钟

ruby-on-rails - 如何在 Rails 中检查给定时间是否在下午 3 点之后?

c# - 如何从 C# 读取 PowerShell 脚本标准输出和标准错误

c# - ORA-00922 : missing or invalid option When trying to execute PL/SQL from C#

java - 如何在java中比较格式 "EEE MMM dd HH:mm:ss zzz yyyy"和 "yyyy-MM-dd hh:mm:sss"的日期时间?