我正在寻找一种将WindowsFILETIME
结构转换为std::chrono::time_point< std::chrono::file_clock>
的方法,以便我可以在两个文件时间之间建立差异并表示持续时间f.e.在std::chrono::microseconds
中
编辑以下是霍华德回答的完整示例。
免责声明:我没有Windows系统进行测试。
我认为只需要取FILETIME
的高位和低位字,并将64位整数值解释为自std::chrono::file_clock
纪元以来的十分之一微秒数:
FILETIME ft = ...
file_clock::duration d{(static_cast<int64_t>(ft.dwHighDateTime) << 32)
| ft.dwLowDateTime};
file_clock::time_point tp{d};
FILETIME
和file_clock
(在Windows上)的单位和纪元都是相同的。