在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++时间函数的运用

在程序开发中,未免需要使用到时间差比较。最简单的时间比较方法是分别取出当前时间进行相减得出时间差。取出当前时间可以使用GetLocalTime()函数来取出。可是在Windows Mobile和Wince(Windows Embedded CE)平台,使用GetLocalTime()函数取出的SYSTEMTIME是不包含微秒的。解决办法是使用GetTickCount()函数,先看下面的代码。

int _tmain(int argc, _TCHAR* argv[])
{
SYSTEMTIME sysTime;
GetLocalTime(&sysTime);
DWORD tickCount = GetTickCount();
printf("current time = %04d-%02d-%02d %02d:%02d:%02d %d, tick count = %ld\n", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond, sysTime.wMilliseconds, tickCount);

Sleep(3000);
GetLocalTime(&sysTime);
tickCount = GetTickCount();
printf("sleep 3 seconds\ncurrent time = %04d-%02d-%02d %02d:%02d:%02d %d, tick count = %ld\n", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond, sysTime.wMilliseconds, tickCount);

return 0;
}

执行效果如下:

GetLocalTime

从上图可以看到使用GetLocalTime()函数,不能取出微秒。而GetTickCount()函数可以取出系统启动后的微秒级别的时间间隔(elapsed time),但是有个问题需要注意,如果系统运行长于49.7 天,值回清零。

如果计算时间差的精度需要用到微秒,需要使用GetTickCount()而不是GetLocalTime()。

posted @ 2009-12-11 06:47  Jake Lin  阅读(1840)  评论(4编辑  收藏  举报