如果你查看输出,cal 9 1752
你会看到这个奇怪的输出:
September 1752
S M Tu W Th F S
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
下面这个故事的标题是“cal 9 1752 解释”” 在 90 年代初从新闻列表中复制并存档于为计算机观众提供的有趣内容的集合作者:David G. Wiseman(西安大略大学计算机科学系网络经理)。
最初在某些旧版本 7 机器上编写“cal”命令的人在他的代码中存在一个相差一错误。当 malloc 变量用零覆盖 12 个额外字节时,这会显示为一些错误的输出,从而导致上面看到的奇怪的日历输出。
现在,没有一个头脑清醒的人真正关心 1752 年 9 月的日历。主意1752 年的日期在 UNIX 下不存在,因为 UNIX 的时间直到 1970 年初才开始。因此,直到很久以后才知道“cal”有这个错误。到那时,已有数千份“cal”副本四处流传,其中许多只是二进制文件。想要解决所有问题已经太晚了。
因此,在 1975 年中期,AT&T 的一些高级官员会见了教皇,并达成了一项协议。日历进行了追溯更改,使 1752 年 9 月与 UNIX 实际情况保持一致。由于日历是通过计数而改变的向后从 1752 年 9 月 14 日开始,此后的日期均不受影响。之前的日期都推迟了12天。他们还修复了“cal”的手册页,以将错误记录为一项功能。
从9月3日到9月13日这11天简直就从记录中消失了。他们查了历史书,发现幸运的是,这11天里没有发生什么大事。
总的来说,这整个事件几乎算不上什么事件。后来一位科幻作家听说了这件事,把这件事写成了一部长篇科幻小说,名叫《天堂车床》,在我看来,这本书与真实发生的事情几乎没有相似之处。
输出异常的真正解释是什么?
答案1
要追踪真实的故事,请尝试运行man cal
自己:
The Gregorian Reformation is assumed to have occurred in 1752 on the 3rd of September. By this time, most countries had recognized the reforma- tion (although a few did not recognize it until the early 1900’s.) Ten days following that date were eliminated by the reformation, so the cal- endar for that month is a bit unusual.
然后,如果您的历史记录很粗略,请继续使用维基百科来获取有关由公历以及它在世界各地采用的历史:
公历改革包含两个部分,即对教皇格列高利时代使用的儒略历的改革,以及对教会使用的阴历周期和儒略历计算复活节日期的改革。
[...]
除了日历年的平均长度从 365.25 天(365 天 6 小时)更改为 365.2425 天(365 天 5 小时 49 分 12 秒)之外,每年还减少了 10 分 48 秒,公历改革还解决了过去累积的这些长度之间的差异。
[...]
然而,由于新教改革,许多西欧国家最初并没有遵循格里高利改革,而是维持了旧有的制度。最终,为了保持一致性,其他国家也效仿了这一改革,但到儒略历最后的追随者时在东欧(俄罗斯和希腊)在 20 世纪改为公历系统后,由于自 1582 年以来两个历法之间的额外累积差异,他们不得不从日历中删除 13 天。
[...]
英国和大英帝国(包括现在的美国东部)于 1752 年采用了公历,到那时需要修正 11 天。 1752 年 9 月 2 日星期三之后是 1752 年 9 月 14 日星期四。
当 Unix 出现并将世界时钟重置为 1970 年 1 月 1 日开始时,除了选择一个日期来显示重置之外,对整个混乱无能为力。由于世界上不同国家在不同时间采用当前的公历系统,因此进行此更正的确切时间有些随意。
如果您有理由在软件中计算追溯到那么远的日期,那么您将遇到比重置更重要的问题!日历的历史充满了惊喜!
答案2
这里有一个关于日历的好论文(PDF),解释了复活节在一年中的缓慢变化如何使得日期修正变得必要,并描述了不同国家何时进行转换。
第 904 页:
他[教皇格里高利]还纠正了日历中累积的 10 天错误,宣布公元 1582 年 10 月 4 日星期四(旧式(儒略历)的最后日期)之后将是公元 1582 年 10 月 15 日星期五,新式(公历)日历的第一天。天主教国家遵循这一规则,但新教国家抵制:西班牙、葡萄牙和意大利立即采用了这一规则,德国的天主教国家也是如此。德国的新教地区直到 1700 年才采用它。英国及其殖民地(包括美国)等到第1752章俄罗斯坚持到 1918 年革命后,保加利亚坚持到 1920 年。
该论文继续引用了天文学家编制的广泛的采用日期列表,并以直接的方式解释了如何在不同日历系统之间进行转换。