当我更新我的应用程序时,我有这个DateTime对象(更新)设置为DateTime.now。
我也有这个timerTick事件,每5秒调用一次,应检查多少分钟前更新。
我试过了:
if ((DateTime.Now - Updated).Minutes > 0)
{
updateTextBlock.Text = "updated " + ((DateTime.Now - Updated).Minutes).ToString() + " minutes ago";
}
但它似乎无法正常工作。有没有更好的方法来做到这一点?
/ R
答案 0 :(得分:9)
我怀疑你想要TotalMinutes
而不是Minutes
。否则,您将只获得-59到59范围内的值。
您可能还需要考虑使用UtcNow
而不是Now
- 否则由于时区更改(用户更改时区或更改其UTC偏移的时区)您可能会产生奇怪的效果,通常用于夏令时。)
答案 1 :(得分:2)
您可能会发现使用System.Diagnostics.StopWatch
的实例更容易跟踪自任何特定起点以来经过的时间。
它比在DateTime对象上进行数学运算更可靠和准确,因为它将使用硬件的高分辨率计时器(如果有的话)。
答案 2 :(得分:1)
您可能正在寻找TotalMinutes
,而不仅仅是Minutes
。 TotalMinutes
将为您提供间隔中的总分钟数,而Minutes
仅给出0-59(因为您还有Hours
等。)
答案 3 :(得分:0)
我做过类似事情的一种方法是使用TimeSpan
我有两个变量timePassed
和tickTime
我将tickTime
设为5秒TimeSpan
而timePassed
为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
来获取更新后的时间。
希望这有帮助