Warm tip: This article is reproduced from serverfault.com, please click

c++-时间转换器

(c++ - Time Converter)

发布于 2010-12-09 20:50:47

是否有将time(NULL)值转换为WINDOWS时间的工具。

time(NULL)将给出自1970年1月1日以来的时间,以秒为单位。

在C ++中,我们经常使用time(NULL)对象发送时间。

Questioner
ckv
Viewed
0
wallyk 2010-12-10 08:49:46

如果按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之间的差),就可以轻松地将一个转换为另一个。