我們現在使用的曆法屬於太陽曆,也就是以太陽運行為標準所訂下的,大多數人都知道有一個用來修正時間的規則 — 閏年,使的特定年份會有366天,但其中設計這套規則的意義就較不為人所知了。
從閏年規則說起,以下是我們熟知的閏年規則
- 每四年閏一年
- 逢百年不閏
- 逢四百年閏一年
說起來還真的有些複雜,事實上,我們所說的修正,其實是在修正我們所認知的一年與回歸年(tropical year)之間的差距,那甚麼是回歸年呢?
回歸年
回歸年是指太陽在黃道上回到同一位置的週期,是從地球上觀察的角度定義的,一回歸年等於365.2422個平均太陽日,又因為地球自轉軸進動(自轉軸每年會有小角度變化,這又是另一個學問,在此先不談)的影響,每年會和恆星年有 20分24秒的差距。
一年 = 365平均太陽日
1回歸年 = 365.2422平均太陽日
1恆星年 = 365.2564平均太陽日
每年有 365.2422天,那少過的0.2422天呢? 我們沒辦法過 0.2422天,但也不能當作沒這回事啊,因此將他累積起來,積到差不多一天的時候再來修正,因此每四年會閏一年,但 0.2422 * 4 ≠ 1,所以接下來會繼續累積,修正,累積,修正……我用下面的算式說明。
過了四年,總共少0.9388天
-0.2422天 * 4 = -0.9388天
每四年閏一次,多加一天進去,但這樣卻多了0.0312天
-0.9388天 +1天 = 0.0312天
過了一百年後,居然多了
0.78天 0.0312天 * 25 = 0.78天
於是逢百不閏,扣掉多的天數,但又少0.22天
0.78天 - 1 = -0.22天
四百年後,少的天數達0.88天
-0.22天 * 4 = -0.88天
逢四百一閏,減掉多餘的一天
-0.88天 + 1 = +0.12天
各位可能會有個疑問,就算四百年閏一天,不也還有多0.12天嗎? 為甚麼不繼續寫下去? 沒錯!的確是要修正,照理會在0.12天 * 8 = 0.96天發生時修正,也就是每3200年一次,不過現在是2017年,還用不到,所以沒有才制定,大致上這就是為什麼要閏年,又為什麼是這樣的規則的原因。
閏年的計算在以程式語言實作非常簡單,僅需簡單的運算與判斷即可達成,放上一段範例 code。
|
|