History

‘cal’ 壞了嗎?1752 年 9 月發生了什麼?

  • December 4, 2015

如果你看一下你的輸出,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 Explained”的故事是 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天裡並沒有發生什麼大事。

總的來說,這整個事件幾乎是無關緊要的。一位科幻作家後來聽說了這件事,並將這件事炸成一部完整的科幻作品,名為《天堂的車床》,在我看來,這本書與真實發生的事情幾乎沒有相似之處。

輸出異常的真正解釋是什麼?

要追踪真實的故事,請嘗試執行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.

然後,如果您的歷史是粗略的,請繼續使用 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 日開始時,除了選擇一個顯示重置的日期外,沒有什麼可以解決整個混亂的。由於世界在不同國家的不同時間採用了目前的公曆系統,因此進行此更正的確切時間有些武斷。

如果您有理由在軟體中計算可以追溯到那麼遠的日期,那麼您將遇到比重置更重要的問題!日曆的歷史充滿了驚喜!

引用自:https://unix.stackexchange.com/questions/17903