如果你看一下你的输出,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
Run Code Online (Sandbox Code Playgroud)
以下标题为“ 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天里,并没有发生什么大事。
总的来说,这整个事件几乎是一个非事件。一位科幻作家后来听说了这件事,把这件事吹成了一部名为“天堂车床”的长篇科幻作品,在我看来,这本书与真实发生的事情几乎没有相似之处。
输出异常的真正解释是什么?
Cal*_*leb 50
要追踪真实的故事,请尝试man cal
自己运行:
Run Code Online (Sandbox Code Playgroud)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.
然后,如果您的历史很粗略,请继续访问 Wikipedia,了解有关公历引入的更改及其在世界各地采用的历史的信息:
格里高利历改革包括两部分,对教皇格里高利时代之前使用的儒略历进行改革,以及对教会与儒略历一起用于计算复活节日期的农历周期的改革。
[...]
除了将日历年的平均长度从 365.25 天(365 天 6 小时)更改为 365.2425 天(365 天 5 小时 49 分 12 秒)之外,每年还减少了 10 分 48 秒,公历改革也处理了这些长度之间过去累积的差异。
[...]
然而,由于新教改革,许多西欧国家最初并没有遵循格里高利改革,而是保持着旧式的制度。最终其他国家为了一致性而进行了改革,但是当东欧(俄罗斯和希腊)的最后一批儒略历的追随者在 20 世纪改用公历系统时,他们的历法不得不减少 13 天,由于自 1582 年以来两个日历之间的额外累积差异。
[...]
英国和大英帝国(包括现在的美国东部)在 1752 年采用了公历,到那时需要修正 11 天。1752 年 9 月 2 日星期三之后是 1752 年 9 月 14 日星期四。
当 Unix 出现并将世界时钟重置为 1970 年 1 月 1 日开始时,除了选择一个日期来显示重置之外,没有什么可以解决整个混乱局面。由于世界在不同国家的不同时间采用当前的公历系统,因此进行此更正的确切时间有些随意。
如果你有理由在你的软件中计算回溯那么远的日期,你会遇到比重置更重要的问题!日历的历史充满了惊喜!
归档时间: |
|
查看次数: |
30959 次 |
最近记录: |