2013-01-02 177 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