是否有将time(NULL)值转换为WINDOWS时间的工具。
time(NULL)将给出自1970年1月1日以来的时间,以秒为单位。
在C ++中,我们经常使用time(NULL)对象发送时间。
如果按Windows时间表示NTFS中使用的64位时间,则可以使用转换:
int64 wintime = 100000000uL * time(NULL) + 0x19db1ded53e8000uLL
where
int64
是你的编译器用于64位整数的类型。
NT时间基于utc的原点(1601-01-01 00:00:00 utc),每秒计数一千万个单位-100 ns的定时精度。它假设一个简单的leap年序列,而忽略了1752年前后的日历复杂性。
因此,通过将Unix时间乘以一千万,然后加上116444736000000000(十进制)或0x19DB1DED53E8000(这是1970-01-01和1601-01-01之间的差),就可以轻松地将一个转换为另一个。