1601年1月1日有什么意义?

zak*_*zak 31 time date ansi

此结构是一个64位值,表示
自1601年1月1日以来100纳秒间隔的数量.

参考: http ://msdn.microsoft.com/en-us/library/aa915351

为什么设置"自1601年以来"?为什么不unix时间1970年甚至2000年?在时间日期如此遥远的兼容性我能做些什么?


回答自己.

ANSI日期将1601年1月1日定义为第1天,并用作COBOL整数日期的来源.这个时代是公历前400年闰年周期的开始,以2000年结束.正如您可以在Julian_day条目下的维基百科中找到的那样.

进一步:

Ian*_*oyd 42

因为1/1/1601是时代的开始.

从Raymond Chen那里拿走:

为什么Win32纪元是1601年1月1日?

FILETIME自1601年1月1日起,该结构以100纳秒的间隔记录时间.为什么选择该日期?

公历运行400年,1601是Windows NT设计时活动周期的第一年.换句话说,它被选择使数学出来很好.

我实际上有Dave Cutler的电子邮件确认了这一点.


Ste*_*n C 7

那么,1601年1月1日是17世纪的第一天.钟摆是在17世纪发明的,可以将时间测量精确到1秒.因此(理论上)现有文献中可能存在从那个时期到时间点的参考文献.

但实际上,选择是任意的.必须有一个"时代",并提供

  1. 这个时代远远不够,"负时间"的价值很少,而且

  2. 未来的环绕时间远远不够几代人了,

任何选择都可以.

但是嘿,如果你担心的那么多,请给史蒂夫巴尔默发一封信.


我倾向于相信Ian Boyd的回答.其中的原因是它使数学更容易(格里高利闰年计算).鉴于这种简化有多么微小,以及它背后的推理有多么弱,它(IMO)"基本上"是任意的.(不是我说这是错的......)

  • 所以呢?当您想要在过去为某个事件添加时间戳时,它非常有用. (2认同)

Jam*_*son 7

这是一个务实的选择。

现代西方历法直到 1752 年才一致,当时英国(及其殖民地)采用公历,自 1582 年以来,大部分天主教欧洲都采用公历。

这是具有闰年等的现代日历,以使 1 月 1 日与冬至保持一致。

那么为什么不从 1752 年 1 月 1 日开始呢?因为基本的闰年规则“如果两位数的年份可以被四整除,则为闰年,除非四位数字的世纪也可以被四整除”)建立了 400 年的循环。从 1601 年 1 月 1 日开始的第一个完整周期(至少在罗马)。

闰年和日期的计算很痛苦,而没有在四百年的中途开始,所以 1600 是一个很好的开始,只要你记住 1752 年之前的任何日期都需要通过地理位置来限定,因为英国的日期是 10 天不同步。到这个时候罗马日期。