如何在 C++ ATL/MFC 中检索具有相同格式的刻度,如 DateTime.Ticks
Posted
技术标签:
【中文标题】如何在 C++ ATL/MFC 中检索具有相同格式的刻度,如 DateTime.Ticks【英文标题】:How retrieve ticks with same format like DateTime.Ticks in C++ ATL/MFC 【发布时间】:2012-05-10 23:05:27 【问题描述】:是否可以获得与DateTime.Ticks
.NET 对象相同格式的刻度数,以 100ns 为单位,在 C++ ATL 或 MFC 中?
【问题讨论】:
将 0x701ce1722770000L 添加到 FILETIME 以将偏差从 1600 年更改为 0 年。 【参考方案1】:DateTime.Ticks
对定时器分辨率没有任何影响,因此不能保证定时器精度为 100ns。在 C++ 中,您可以使用类似的值:
ULONGLONG nTicks = GetTickCount() * 10000i64;
如果您需要更准确的计时器,请查找基于 QueryPerformanceCounter
的实现。见:
UPD。至于与 .NET Ticks
属性的对齐方式,请参阅上面 Hans 的评论 - 从 GetFileTime
API 的结果中转换/计算的值也采用相同的 100 ns 单位,并由固定常数抵消 Ticks
属性.
【讨论】:
根据 MSDN GetTickCount() 返回系统启动后的滴答计数。自 '01/01/0001 00:00:00' 以来有能力得到滴答声,就像在 .NET 中一样?GetSystemTimeAsFileTime
msdn.microsoft.com/en-us/library/windows/desktop/… 让您在FILETIME
结构中获得时间,然后将其值添加到单个 64 位整数中,添加硬编码常量(见上文),这就是您所需要的。 以上是关于如何在 C++ ATL/MFC 中检索具有相同格式的刻度,如 DateTime.Ticks的主要内容,如果未能解决你的问题,请参考以下文章
如何将 ATL/MFC CString 转换为 QString?
当所有检索值在laravel中具有相同的会话键时,如何检查会话数组是不是具有唯一的ID