2014-01-11 26 views
0

这是我的代码:C# - 知道时间

IdleTime = System.Environment.TickCount - LastInput.dwTime; 
int hour = ((IdleTime + 500)/86400000); 
int min = ((IdleTime + 500)/60000) - (hour * 60); 
int sec = ((IdleTime + 500)/1000) - (min * 60); 

我在跟踪空闲时间

的秒数工作的计时器有一个空闲计时器,这和最小的作品,但林不知道,如果它会工作一小时24小时我认为它可能会出现在我身上因为86400000毫秒毫秒是一天,我有秒和最少从前一次获取数据像sec从最小值获取数据。谁能帮忙?

回答

1

我想说

IdleTime = System.Environment.TickCount - LastInput.dwTime; 
int hours = IdleTime/3600000; 
int minutes = IdleTime/60000 - hour * 60; 
int seconds = IdleTime/1000 - min * 60; 

我不知道为什么你从IdleTime 500。减去。

+0

我要么,它的代码,我下了一个网站,把它变成了第二位,但我在做这个项目2年前,所以,你的代码似乎也在工作 – user1892884

+1

@ user1892884:500毫秒被添加到空闲时间的原因是轮换秒部分而不是截断它。 0 - 0.5秒被认为是0秒,而0.5 - 1秒被认为是1秒。 –

2

我建议你用TimeSpan型工作,以避免自己做数学题:

int milliseconds = Environment.TickCount - LastInput.dwTime; 
TimeSpan idleTime = TimeSpan.FromMilliseconds(milliseconds + 500); 
int hour = (int) idleTime.TotalHours; 
int minutes = idleTime.Minutes; 
int seconds = idleTime.Seconds;