今天看一个有关时间的例程,发现Getsystime()与Getlocaltime()返回的时间相差了8个小时,于是查找资料,发现了这两个函数的区别:
根据不同的需求,可能需要使用不同的时间,目前有UTC和本地时间。UTC是格林威治时间,也就是全球标准时间。本地时间就是相对于UTC而言的,比如中国北京是在东8区,相对于UTC就多了8个小时。一般使用到的时间都是使用本地时间,也就是调用函数GetLocalTime。
函数GetSystemTime和GetLocalTime声明如下:
WINBASEAPI
VOID
WINAPI
GetSystemTime(
__out LPSYSTEMTIME lpSystemTime
);
WINBASEAPI
VOID
WINAPI
GetLocalTime(
__out LPSYSTEMTIME lpSystemTime
);
lpSystemTime是获取系统时间的结构。
调用函数的例子如下:
void TestSystem(void)
{
//获取系统的UTC时间。
SYSTEMTIME stUTC;
::GetSystemTime(&stUTC);
//显示时间的间隔。
const int nBufSize = 256;
TCHAR chBuf[nBufSize];
wsprintf(chBuf,_T("UTC: %u/%u/%u %u:%u:%u:%u %d\r\n"),
stUTC.wYear, stUTC.wMonth, stUTC.wDay,
stUTC.wHour, stUTC.wMinute, stUTC.wSecond,
stUTC.wMilliseconds,stUTC.wDayOfWeek);
OutputDebugString(chBuf);
//获取当地的时间。
SYSTEMTIME stLocal;
::GetLocalTime(&stLocal);
//显示时间的间隔。
wsprintf(chBuf,_T("Local: %u/%u/%u %u:%u:%u:%u %d\r\n"),
stLocal.wYear, stLocal.wMonth, stLocal.wDay,
stLocal.wHour, stLocal.wMinute, stLocal.wSecond,
stLocal.wMilliseconds,stLocal.wDayOfWeek);
OutputDebugString(chBuf);
}
上面两个函数在我测试时输出的结果,如下:
UTC: 2009/11/23 1:53:1:46 0
Local: 2009/11/23 9:53:1:46 0