2013-01-02 145 views
0

我无法确定系统运行的时间。我现在太累了,但无事可做。我使用GetTickCount()来获得毫秒,但我必须将它们转换为人类可读的格式。我尝试过这样的事情,但我得到了奇怪的结果。系统正常运行时间

void GetUpTime(DWORD Tick) //GetTickCount() argument. 
{ 
    wchar_t temp[256] = {0}; 
    ZeroMemory(tmpBuff, sizeof(tmpBuff)); 

    wsprintfW(temp, L"%uh %um %us", Tick/60, Tick/60*60, Tick/60*60*60); 
    lstrcpyW(Time, tmpBuff); 
} 

如我想在这里,蜱/ 60 =秒,蜱/ 60 * 60 =分钟和蜱/ 60 * 60 * 60 =小时。但我需要这样的:1小时5分36秒不是整个谈话。 此致敬礼。

回答

5

Tick/60*60意味着与(Tick/60)*60相同的东西,这显然不是你想要的。您可能的意思是代替Tick/(60*60)


如果你愿意,可以在 “剥离” 各单位更具可读性:

DWORD seconds = Tick/1000; /* Milliseconds -> seconds */ 
DWORD minutes = seconds/60; /* Seconds -> minutes */ 
DWORD hours = minutes/60; /* Minutes -> hours */ 

/* Adjust seconds and minutes to leave only the remainder. */ 
seconds %= 60; 
minutes %= 60; 

wsprintfW(temp, L"%uh %um %us", hours, minutes, seconds); 
+0

哦,是的,对不起。但我仍然需要这样的格式。我得到疯狂的价值:(6541159h 109019m 1816s 1816秒不存在,它必须被添加到分钟等等 – Nika

+0

@OvérFlôwz你没有从毫秒转换为秒,有一件事。 。 – cdhowie

+0

哦,谢谢!我想通了:)现在怎么做:)我的例子是否正确? \t小时= Tick /(60 * 60 * 60); \t分钟= Tick /(60 * 60); \t秒= Tick/60; (秒> 59) \t while(Seconds> 59) \t { \t \t秒 - = 60; \t \t分钟+ = 1; \t} \t而(分钟> 59) \t { \t \t分钟 - = 60; \t \t小时+ = 1; \t} – Nika