C#DateTime属于过去24小时内

时间:2011-03-19 22:24:46

标签: c#

我有一个DateTime对象,我想查看它是否属于过去24小时内。

我做了类似这样的事情,但错了:

myDateTime > DateTime.Now.AddHours(-24) && myDateTime < DateTime.Now

我哪里出错?

2 个答案:

答案 0 :(得分:33)

您发布的代码没有任何问题,因此无论您做错了什么都在代码的其他地方。

我只在代码中看到两个小缺陷,但它们只影响极端情况:

您应该避免在代码中重复获取DateTime.Now属性。它的值会发生变化,因此在某些情况下,当值从一次使用变为下一次使用时,您可能会得到不一致的结果。

要获得时间间隔,您通常会将一个包含和一个独占运算符配对,例如><=,或>=<。这样你可以检查彼此相邻的间隔,例如0到24小时和24到28小时,没有间隙或重叠。

DateTime now = DateTime.Now;
if (myDateTime > now.AddHours(-24) && myDateTime <= now)

答案 1 :(得分:12)

  1. 仅在函数内获取DateTime.Now一次 - 否则值可能会发生变化。
  2. 使用<=,而不是<。如果在设置时间后检查一微秒,它仍然等于DateTime.Now。我实际上在生产代码中遇到了这种情况,导入不会出现在检查<的其他查询中,因为导入太快了!
  3. 使用此代码:

    DateTime now = DateTime.Now;
    DateTime yesterday = now.AddDays(-1);
    if (myDateTime > yesterday && myDateTime <= now) {
        ...
    }