为什么使用常量 11644473600 将 FILETIME 转换为 Unix 时间?

问题描述 投票:0回答:1

我一直在研究不同操作系统如何表示时间,以及如何在它们之间进行转换。我读过几页,它们都描述了在 FILETIME 和 Unix 时间之间转换的类似方法,最值得注意的是这篇文章。其工作原理背后的逻辑非常简单,并且清楚地表明从

11644473600
January 1st, 1601
已经有
January 1st 1970
秒了。

我的问题是:为什么常数是

11644473600
而不是
11644732800

当我除掉 11,644,473,600 秒时,等于 134,774 天。这将包括 92 个闰年,结果约为 368.99 年。每次我自己计算数字时,我得出的 369 年(其中包含 92 个闰年)的数字最终是 11,644,732,800 秒(134,777 天)。

我只是做错了一些数学运算,还是还有其他一些我尚未阅读或了解的有关此转换如何工作的信息?

time unix-timestamp filetime
1个回答
0
投票

我认为它们来自这样一个事实:并非所有能被 4 整除的年份都是闰年。正如维基百科上所说:

这个额外的闰日发生在每年 4 的整数倍的年份(可被 100 整除的年份除外,但不能被 400 整除的年份)

© www.soinside.com 2019 - 2024. All rights reserved.