DateTime,更新后的分钟数?

时间:2011-02-02 17:52:31

标签: c#

当我更新我的应用程序时,我有这个DateTime对象(更新)设置为DateTime.now。

我也有这个timerTick事件,每5秒调用一次,应检查多少分钟前更新。

我试过了:

if ((DateTime.Now - Updated).Minutes > 0)
{
     updateTextBlock.Text = "updated " + ((DateTime.Now - Updated).Minutes).ToString() + " minutes ago";           
}

但它似乎无法正常工作。有没有更好的方法来做到这一点?

/ R

4 个答案:

答案 0 :(得分:9)

我怀疑你想要TotalMinutes而不是Minutes。否则,您将只获得-59到59范围内的值。

您可能还需要考虑使用UtcNow而不是Now - 否则由于时区更改(用户更改时区或更改其UTC偏移的时区)您可能会产生奇怪的效果,通常用于夏令时。)

答案 1 :(得分:2)

您可能会发现使用System.Diagnostics.StopWatch的实例更容易跟踪自任何特定起点以来经过的时间。

它比在DateTime对象上进行数学运算更可靠和准确,因为它将使用硬件的高分辨率计时器(如果有的话)。

答案 2 :(得分:1)

您可能正在寻找TotalMinutes,而不仅仅是MinutesTotalMinutes将为您提供间隔中的总分钟数,而Minutes仅给出0-59(因为您还有Hours等。)

答案 3 :(得分:0)

我做过类似事情的一种方法是使用TimeSpan

我有两个变量timePassedtickTime

我将tickTime设为5秒TimeSpantimePassed为0

TimeSpan tickTime = new TimeSpan(0,0,0,5); // 5 seconds
TimeSpan timePassed = new TimeSpan(0,0,0,0); // 0 seconds

然后在tick事件的处理程序中,我将tickTime添加到timePassed

timePassed = timePassed.Add(tickTime); \\ adds 5 seconds to the timePassed TimeSpan

然后您可以使用timePassed来获取更新后的时间。 希望这有帮助