我想找出DateTime.UtcNow
之间是否存在任何差异。
LastEdited
(9/11/2011 21:00:00)不到30分钟,因此bool
值应返回false
,因为差异较大。
但它返回true
。我可以知道这里有什么问题吗?
bool difference = ((DateTime.UtcNow - LastEdited).Minutes < 30);
答案 0 :(得分:9)
您尝试使用
吗?bool difference = ((DateTime.UtcNow - LastEdited).TotalMinutes < 30);
结果实际上是Timespan
,如果您检查TotalMinutes
,它会在几分钟内为您提供整个跨度部分,而Minutes
只会给出时间间隔的实际分钟成分。
答案 1 :(得分:8)
您正在查看时间跨度中的分钟组件。请改为TotalMinutes。
答案 2 :(得分:2)
使用TotalMinutes
代替Minutes
。
分钟只是差异的一小部分,因此1小时10分钟将导致Minutes
为10,而TotalMinutes
将导致它为70.
答案 3 :(得分:0)
试试这种方式
UtcNow = Convert.ToDateTime(UtcNowtxt.Text.Trim());
LastEdited = Convert.ToDateTime(LastEditedtxt.Text.Trim());
TimeSpan GetDiff = (LastEditedtxt).Subtract(UtcNow);
if (GetDiff.Minutes < 30)
{
//Do something
}
答案 4 :(得分:0)
虽然使用.TotalMinutes
代替.Minutes
时您的代码可以正常使用我建议使用
bool isLessThan30MinutesOld = (LastEdited.AddMinutes(30) > DateTime.UtcNow);
对我来说,这更容易阅读和理解。
答案 5 :(得分:0)
替代:
bool difference = (DateTime.UtcNow - LastEdited) < new TimeSpan(0,30,0);
这里唯一的好处就是如果你计算差异化(30分钟)变得更加复杂。