我有一个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
DateTime.Now在函数内获得一次 - 否则值可能会改变.<=,而不是<.如果你在设定时间后检查一微秒,它仍将等于DateTime.Now.我实际上在生产代码中碰到了这个问题,导入不会出现在另一个检查的查询中,<因为导入太快了!使用此代码:
DateTime now = DateTime.Now;
DateTime yesterday = now.AddDays(-1);
if (myDateTime > yesterday && myDateTime <= now) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17974 次 |
| 最近记录: |