2011-02-02 21 views
0

我有这个DateTime对象(更新),它被设置为DateTime.now,当我更新我的应用程序。更新时间和分钟数?

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

我已经试过:

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

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

/R

+0

发生了什么呢?你预期会发生什么? – Oded 2011-02-02 17:53:47

+0

对我来说看起来不错,但是......你确定这个错误不是在某处不同吗?而你的意思是“它似乎没有正常工作”?输出? – 2011-02-02 17:54:26

回答

9

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

您可能还想考虑使用UtcNow而不是Now - 否则由于时区更改(用户更改时间区域或时区更改其UTC时间偏移,通常为夏令时)。

1

您可能正在寻找TotalMinutes,而不仅仅是MinutesTotalMinutes会给你在区间分钟的总数,而Minutes只给0-59(因为你也有Hours等)

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 

然后在处理程序记号事件我想补充tickTimetimePassed

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

然后你可以使用timePassed来获取时间,因为更新。 希望这有助于

2

您可能会发现使用System.Diagnostics.StopWatch实例可以更轻松地跟踪自任何特定起点以来经过了多长时间。

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