在Windows下獲取時間常用的API有:GetLocalTime(), GetSystemTime(), GetTickCount(),以下說明三者的用法及差別。
(1) GetLocalTime
該函數用於獲取本地時間,精確到毫秒級。函數聲明如下:
void WINAPI GetLocalTime(
_Out_ LPSYSTEMTIME lpSystemTime
);
函數將獲取到的時間保存在SYSTEMTIME結構體中,該結構體聲明如下:
typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
(2) GetSystemTime()
函數聲明及參數結構類似於GetLocalTime():
void WINAPI GetSystemTime(
_Out_ LPSYSTEMTIME lpSystemTime
);
但不同於GetLocalTime(),該函數獲取世界協調時間(UTC).
#include <stdio.h>
#include <windows.h>
int main()
{
SYSTEMTIME st, lt;
GetSystemTime(&st);
GetLocalTime(<);
printf("The system time is: %02d:%02d\n", st.wHour, st.wMinute);
printf(" The local time is: %02d:%02d\n", lt.wHour, lt.wMinute);
return 0;
}
在實際編程中,使用GetLocalTime()頻率更高。(3) GetTickCount
該函數獲取自系統啓動後所經過的毫秒數。
DWORD WINAPI GetTickCount(void);
可以用該函數計算程序運行所花費的時間。
#include <stdioi.h>
#include <time.h>
#include <windows.h>
int main()
{
DWORD startTime, endTime;
startTime = GetTickCount();
Sleep(1);
endTime = GetTickCount();
printf("Program takes: %02d\n", endTime - startTime);
return 0;
}