如何在C#中比较两个DateTime?

3

我想知道 DateTime.UtcNowLastEdited(2011年9月11日21:00:00) 之间是否有任何差别。

LastEdited距现在不到30分钟,因此布尔值应该返回false,因为时间差更长。

但是它返回了true。请问这里出了什么问题?

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

2
(1) 你应该使用 TotalMinutes。 (2) 很可能 LastEdited 不是在 UTC 时间,而是在你的本地时区。 - Daniel Hilgarth
@Murthy:我能给你的建议是,对于这种简单的问题,首先搜索谷歌 - Sarwar Erfan
6个回答

9
你尝试过使用吗?
bool difference = ((DateTime.UtcNow - LastEdited).TotalMinutes < 30);

实际上,结果是一个 Timespan ,如果您检查 TotalMinutes ,它将为您提供以分钟为单位的整个时间跨度部分,而 Minutes 仅会给出时间间隔的实际分钟部分。


8
您正在查看时间跨度中的分钟组件。请查看TotalMinutes

2

使用TotalMinutes代替Minutes

Minutes仅表示时间差的分钟部分,因此1小时10分钟将导致Minutes为10,而TotalMinutes将导致其为70。


0

试试这个方法

                UtcNow = Convert.ToDateTime(UtcNowtxt.Text.Trim());
                LastEdited = Convert.ToDateTime(LastEditedtxt.Text.Trim());
                TimeSpan GetDiff = (LastEditedtxt).Subtract(UtcNow);
                if (GetDiff.Minutes < 30)
                {
                    //Do something
                }

0

当你使用.TotalMinutes而不是.Minutes时,你的代码将正常工作,但我建议使用

bool isLessThan30MinutesOld = (LastEdited.AddMinutes(30) > DateTime.UtcNow);

对我来说,这样更容易阅读和理解。


0

备选:

 bool difference = (DateTime.UtcNow - LastEdited) < new TimeSpan(0,30,0);

这里唯一的收益是,如果你用来计算差异的东西(30分钟)变得更加复杂。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接