如何在C#中比较2个DateTime

时间:2011-12-01 11:18:11

标签: c# datetime

我想找出DateTime.UtcNow之间是否存在任何差异。

LastEdited(9/11/2011 21:00:00)不到30分钟,因此bool值应返回false,因为差异较大。

但它返回true。我可以知道这里有什么问题吗?

 bool difference = ((DateTime.UtcNow - LastEdited).Minutes < 30);

6 个答案:

答案 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分钟)变得更加复杂。