【MFC】SYSTEMTIME转换为int64

在开发过程中,需要比较两个毫秒单位的时间,做个记录。

在获取系统当前时间,第一想法是利用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就是最终的以毫秒为单位的数据,可以配合另一个时间数据继续计算时间差。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值