如何在C++中将 windows FILETIME 转换为 std::chrono::time_point<std::chrono::file_clock>



我正在寻找一种将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};

FILETIMEfile_clock(在Windows上)的单位和纪元都是相同的。

最新更新