在开发过程中,需要比较两个毫秒单位的时间,做个记录。
在获取系统当前时间,第一想法是利用CTime获取时间然后计算。但是我使用CTime tm.GetMilliseconds();时系统报错: 类 "ATL::CTime" 没有成员 "GetMilliseconds" ,暂时还没有找到解决方法。
第二想法是利用 SYSTEMTIME 获取系统时间,然后转换成int64再计算。具体操作如下:
// 获取当前时间
SYSTEMTIME ts;
GetLocalTime(&ts);
FILETIME ft;
SystemTimeToFileTime(ts, &ft);
ULARGE_INTEGER ularge;
ularge.LowPart = ft.dwLowDateTime;
ularge.HighPart = ft.dwHighDateTime;
// 116444736000000000 :表示1970.1.1
// 288000000000:表示8小时。 因为时区问题不添加这个数时间会有8个小时的时间差
__int64 pt = ((LONGLONG)(ularge.QuadPart - 116444736000000000 - 288000000000) / 10000);
pt就是最终的以毫秒为单位的数据,可以配合另一个时间数据继续计算时间差。