2011年10月1日 星期六

1752年9月:消失的11天


目前的電腦,使用時間戳記(time stamp)的方式記錄、處理時間,時間戳記本身是一個記錄秒數的長整數,現行大部分的電腦系統,從1970年1月1日0時0分0秒為0開始計算。正因為有了時間戳記,電腦可以很快速地處理跟時間相關的資料,例如要把一堆檔案用時間由近而遠排列,只需要把檔案中的時間戳記由大到小排序即可,如果要計算一小時後或是一天後的時間,也只需要將時間戳記加上3600或是86400,相當好處理。時間戳記另外一大優點就是可以轉換成各種形式或語言的日期格式,如此就不會發生一個檔案到了不同語言的電腦系統上會產生日期格式、語言無法判讀的狀況。
Unix-like作業系統(如Linux、Mac OS X、BSD ...等)於系統內有另外除存一套從西元開始的日曆,而觀察該日曆會有一個很好玩的現象。在UNIX-like作業系統的終端機畫面打上「cal 9 1752」,也就是呼叫1752年9月份的日曆,會看到如下的狀態。(範例為使用中文版的Linux或是Mac OS X)
        九月 1752
  日 一 二 三 四 五 六
         1  2 14 15 16
  17 18 19 20 21 22 23
  24 25 26 27 28 29 30
9月3日到9月13日共11天的日期憑空消失了。
這要從羅馬帝國凱薩大帝(Julius Caesar)時期制定的曆法開始說起。西元前45年(羅馬紀年709年)1月1日,羅馬帝國開始使用由國內天文學家與數學家制定的新立法,稱作「Julian calendar」,此曆法與現今的立法類似,一年分為12個月分大月小月交替,大月31天,小月30天,二月只有28天,每四年將二月的結尾多加一天為閏年,用以彌補地球公轉的誤差。
地球繞太陽公轉一週所花的時間是365.24237日,並非365.25日,如果使用Julian calendar四年一閏的機制,長久下來勢必會產生誤差。到了西元1582年的春天,春分點已經誤差有10天之譜,天主教教宗Gregorius XIII於是制定了新曆法,稱作「Gregorian calendar」,從1582年10月4日星期四的次日開始實行,日期則定為1582年10月15日(跳過10日)。「Gregorian calendar」閏年規則由原本的「四年一閏」,改為「四年一閏,逢100的倍數不閏,逢400的倍數閏」,也就是現今的標準曆法。
「Gregorian calendar」在制定完成後,只有義大利、波蘭、西班牙、葡萄牙開始使用。大英帝國當時為抵制教宗的新教國家,一直拖到了1752年9月才實施新曆法,連同當時仍為大英帝國屬地的美國,也是在1752年9月實施新曆法。其他國家則也有不同的實施時間,有興趣者可以參考相關文獻。
UNIX作業系統為美國AT&T於1970年代開發的作業系統,因此UNIX內部的日曆就存下了這段兩種不同曆法的日曆,這套日曆也被日後UNIX的衍生作業系統所使用。

沒有留言:

張貼留言