我正在尝试将 Windows 运行时组件中的 std::tm
转换为 Windows::Foundation::DateTime
。
Windows::Foundation::DateTime
中唯一的属性是 UniversalTime
,它定义为:
A 64-bit signed integer represents a point in time as the number of 100-nanosecond interval prior to or after midnight on January 1, 1601 (according to Gregorian Calendar)
有没有办法在 std
中获取这个值?还是有一种标准的方法来进行转换?
最佳答案
您可以使用mktime
将您的时间转换为 unix,
然后添加魔数(Magic Number) 116444736000000000ULL
:
/* shift is difference between 1970-Jan-01 & 1601-Jan-01
* in 100-nanosecond intervals */
const uint64_t shift = 116444736000000000ULL; // (27111902 << 32) + 3577643008
来自 boost/date_time/filetime_functions.hpp
关于c++ - 如何从 std::tm 转换为 Windows::Foundation::DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815816/