在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()函数,不能取出微秒。而GetTickCount()函数可以取出系统启动后的微秒级别的时间间隔(elapsed time),但是有个问题需要注意,如果系统运行长于49.7 天,值回清零。
如果计算时间差的精度需要用到微秒,需要使用GetTickCount()而不是GetLocalTime()。
作者:Jake Lin(Jake's Blog on 博客园)
出处:http://procoder.cnblogs.com
本作品由Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。
出处:http://procoder.cnblogs.com
本作品由Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。
分类:
移动开发系列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架