我想知道 DateTime.UtcNow
和 LastEdited
(2011年9月11日21:00:00) 之间是否有任何差别。
LastEdited
距现在不到30分钟,因此布尔值应该返回false
,因为时间差更长。
但是它返回了true
。请问这里出了什么问题?
bool difference = ((DateTime.UtcNow - LastEdited).Minutes < 30);
bool difference = ((DateTime.UtcNow - LastEdited).TotalMinutes < 30);
实际上,结果是一个 Timespan
,如果您检查 TotalMinutes
,它将为您提供以分钟为单位的整个时间跨度部分,而 Minutes
仅会给出时间间隔的实际分钟部分。
使用TotalMinutes
代替Minutes
。
Minutes
仅表示时间差的分钟部分,因此1小时10分钟将导致Minutes
为10,而TotalMinutes
将导致其为70。
试试这个方法
UtcNow = Convert.ToDateTime(UtcNowtxt.Text.Trim());
LastEdited = Convert.ToDateTime(LastEditedtxt.Text.Trim());
TimeSpan GetDiff = (LastEditedtxt).Subtract(UtcNow);
if (GetDiff.Minutes < 30)
{
//Do something
}
当你使用.TotalMinutes
而不是.Minutes
时,你的代码将正常工作,但我建议使用
bool isLessThan30MinutesOld = (LastEdited.AddMinutes(30) > DateTime.UtcNow);
对我来说,这样更容易阅读和理解。
备选:
bool difference = (DateTime.UtcNow - LastEdited) < new TimeSpan(0,30,0);
TotalMinutes
。 (2) 很可能LastEdited
不是在 UTC 时间,而是在你的本地时区。 - Daniel Hilgarth