C#DateTime属于过去24小时内

Gul*_*sta 18 c#

我有一个DateTime对象,我想查看它是否在过去的24小时内.

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

myDateTime > DateTime.Now.AddHours(-24) && myDateTime < DateTime.Now
Run Code Online (Sandbox Code Playgroud)

我哪里做错了?

Guf*_*ffa 36

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

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

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

为了让你通常会配对一个包容性的和一个独家运营,像一个时间间隔><=,或>=<.这样你可以检查彼此相邻的间隔,例如0到24小时和24到28小时,没有间隙或重叠.

DateTime now = DateTime.Now;
if (myDateTime > now.AddHours(-24) && myDateTime <= now)
Run Code Online (Sandbox Code Playgroud)


con*_*tor 13

  1. DateTime.Now在函数内获得一次 - 否则值可能会改变.
  2. 使用<=,而不是<.如果你在设定时间后检查一微秒,它仍将等于DateTime.Now.我实际上在生产代码中碰到了这个问题,导入不会出现在另一个检查的查询中,<因为导入太快了!

使用此代码:

DateTime now = DateTime.Now;
DateTime yesterday = now.AddDays(-1);
if (myDateTime > yesterday && myDateTime <= now) {
    ...
}
Run Code Online (Sandbox Code Playgroud)