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);
}

正如我在这里猜测的那样,Tick/60 = 秒,Tick/60*60 = 分钟和 Tick/60*60*60 = 小时。但我需要类似:1h 5m 36s 不是整个对话。问候。

4

1 回答 1

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);
于 2013-01-02T23:16:32.697 回答