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

时间:2012-06-01 11:50:38

标签: date time 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条目下的维基百科中所见。

此外:

4 个答案:

答案 0 :(得分:40)

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

从Raymond Chen那里拿走:

  

Why is the Win32 epoch January 1, 1601?

     

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

     

公历运行400年周期,1601是Windows NT设计时活动周期的第一年。换句话说,选择它可以很好地计算出数学。

     

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

答案 1 :(得分:7)

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

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

  1. 时代足够远,“负时间”值很少,

  2. 将来几年之后,环绕时间已经足够了,

  3. 任何选择都可以。

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


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

答案 2 :(得分:4)

这是一个务实的选择。

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

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

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

闰年和日期的计算是痛苦的,没有从四百年的周期中开始,所以只要你记得1752年之前的任何日期需要通过地理位置来确定,1600年是一个相当不错的开始,因为英国的日期10天不同步。这个时候罗马日期。

答案 3 :(得分:2)

正如已经提到的,我认为流行的答案是因为公历运行了400年的周期,1601是在设计Windows NT时活动的第一年。

1601年1月1日是COBOL整数日期的起源。

ANSI日期格式也是第1天。

如果你根据ISO8601进一步推测这是它所处的格式,那么在1583年之前的时间是基于每年有366天的公历格里高利历。也许他们只是到了下个世纪。