本文受權轉載自“牧夫天文”(Id:astronomycn),作者:imufu
一轉眼就到了2022年,元旦已過,除夕還會遠嗎?
在大家忙着總結和整理一年的收獲與遺憾,并為來年立下美好flag的時候,你可曾想過,元旦與除夕的除舊迎新,陽曆跨年與農曆跨年,具體的區别是什麼?為什麼會有這些區别?閏年和閏月為什麼要這樣設置?閏秒又是什麼玩意兒?
今天的我們可以在手機電腦和電視等設備上随時查看時間與日期,古人自然沒有這樣的便利之處,而農業生産恰恰又依賴于四季更叠的物候規律,于是古人隻得求助于最為直觀的時間度量——晝夜交替的一天、月亮陰晴圓缺的一月以及春夏秋冬的一年。
一天是如何定義的呢?我們知道太陽東升西落,在我們眼中的太陽便是由低到高再到低,而最高的時刻便是正午(12:00),那麼兩次太陽到達最高的時間間隔便是一天。
有的讀者可能會想,古人能看出來什麼時候太陽最高?一直盯着太陽看會不會有些費眼睛?早就想到這一點的古人于是發明了圭表。太陽最高對應着影子最短,把影子的軌迹記下來就可以了,也不需要我們張目對日了。如此便是一天,我們稱之為“平太陽日”,一個平太陽日再分成24個平太陽時,每個平太陽時分成60個平太陽分,每個平太陽分分成60個平太陽秒,這與大家日常生活中的“小時-分鐘-秒”是一緻的。
日晷
日晷:人類古代利用日影測得時刻的一種計時儀器,由晷針和晷面組成日晷石制的圓盤叫“晷面”,應根據當地緯度以一定傾角斜着擺放,使晷面平行于赤道面。晷盤上的刻度是等分的,分為子、醜、寅、卯、辰、巳、午、未、申、酉、戌、亥十二時辰。根據晷針影子判斷處于一天中的哪個時辰。
圭表
圭表:圭表直立于平地上測日影的标杆和石柱,叫做表;正南正北方向平放的測定表影長度的刻闆,叫做圭。當太陽照着表的時候,圭上出現了表的影子,根據影子的方向和長度,就能讀出時間。通過正午太陽在圭面投影的長短來确定節氣。
一月是如何定義的呢?當月球的陰影面朝向地球時(即月相為新月),稱為朔;當月相為滿月時,稱為望。由朔到望再到朔便是一月,我們稱之為朔望月。
一個朔望月中的月相變化
一年是如何定義的呢?很多讀者會想,地球繞太陽一周不就是一年嘛?em...古人看不到地球繞太陽的運動,甚至還認為是太陽繞着地球。那麼古人是怎麼判斷一年過去了呢?其實,如果把每天同一時刻太陽在天空中的位置記錄下來的話,我們會發現太陽在天空中畫了一個“8”,這便是太陽的周年視運動。自然,古人也是通過圭表來觀察,至于這個時刻,正午最方便。這樣得到的一年被稱為回歸年。
會畫“8”字的不止有蜜蜂,太陽也會呦。太陽位于“8”的最下端時便是冬至,位于“8”的最上端時便是夏至。
現如今我們知道,平太陽日、朔望月和回歸年的形成分别源于地球的自轉、月球的繞地公轉和地球的繞日公轉,而且我們也知道這三個運動之間沒什麼太大關系,所以這三個時間間隔就很難有整數倍關系。用平太陽日作為基準,朔望月是29日12時44分2秒,約為29.5306天,回歸年是365日5時48分46秒,約為365.2422天。
那麼為了方便生産生活,讓大家日子過得明明白白,于是人們就協調年、月、日之間的關系并制定了一定的時間序列,也就是曆法。基于太陽周年視運動得到的曆法便是陽曆,基于月相變化得到的曆法便是陰曆,綜合考慮這兩者得到的曆法便是陰陽曆。
接下來,筆者就向大家介紹這三種曆法的原理,建議各位讀者準備好計算器以及送給古人的666。
陽曆
我們日常生活中使用的公曆就是陽曆的一種,将一年定義為365天,而回歸年是365天5時48分46秒,那麼一年下來就少了5時48分46秒。為了方便捋清數量關系,我們把時間都換成秒數,一天總共86400秒(24×60×60=86400),一年下來少了20926秒(5×60×60 48×60 46=20926≈0.2421990741天)。
為了減少偏差,人們就在偏差積累到一天左右的時候進行調整,多了就減一天,少了就加一天。這樣四年下來就少了83704秒(20926×4=83704 ≈0.9687962963天),接近一天了,那麼就規定每四年加一天,即“四年一閏”。不過這樣又有問題,加的一天是86400秒,反而多了2696秒(86400-83704=2696),也就是每四年會多2696秒。
為了解決這個問題,隻要看幾個四年後會剛好湊夠接近一天,然後跳過那一個閏年就好了。一天86400秒除以2696等于……32.0474777448,32個四年(共128年)跳過一次閏年,哇!這樣回歸年和陽曆年隻差了128秒!遠比之前的四位秒數好。用同樣的計算方式,這128秒要86400年才能湊齊下一個一天,人類基本上在地球毀滅之前都不需要再擔心128年周期以上的閏年了。
然而,你可能也聽說了,比起選擇32個四年,也就是128年的周期,我們目前采用的是25個四年也就是100年周期的算法。先讓我們看看100年周期的計算方法,再結合陽曆曆史看看為什麼是用 25×4=100 而不是 32×4=128 做為4年往上的閏年周期。
25個四年之後,多出來的時間積累到了67400秒(2696×25=67400) ≈ 0.7800925926天,也就是說在第一百年的時候跳過原來閏年多出來的一天就好。于是就有了“百年少一閏”。同樣的問題再次出現了,一百年下來會少19000秒(86400-67400=19000),四個百年就會少76000秒(19000×4=76000),同理需要加一天,所以就有了“四百年加一閏”。
這就是“四年一閏,百年少一閏,四百年加一閏”的由來,如果你繼續算下去,每隔四百年會多出來10400秒(86400-76000=10400),8個四百年會多出來83200秒(10400×8=83200),需要再減一天,口訣再加一句“三千兩百年少一閏”;每隔三千兩百年會少3200秒(86400-83200=3200),27個三千兩百年後就剛好少86400秒,加一天完美收官。完整的口訣就應該是“四年一閏,百年少一閏,四百年加一閏,三千兩百年少一閏,八萬六千四百年加一閏。”
那你會想說,這麼麻煩的話不如直接用前面提到的32個四年128年周期。
之所以沒有采用該周期主要有三大原因,前兩個是曆史原因:我們現在使用的公曆也被稱為格裡高利曆,其脫胎于儒略曆。儒略曆是由古羅馬共和國獨裁官蓋烏斯·尤利烏斯·恺撒(也叫儒略·恺撒,Jules Caesar)所推行的曆法,儒略曆規定,逢單為大月31天,逢雙為小月30天,二月為特例,平年29天,閏年30天,四年一閏。經過前面我們的計算可知,這樣每四年會多2696秒,長此以往,偏差會越來越大。于是,教皇格裡高利十三世為彌補這個偏差,在1582年推行格裡高利曆,将當年的日期從10月4日直接跳到10月15日,同時将置閏的規則調整為現在的“四年一閏,百年少一閏,四百年加一閏”,其餘與儒略曆相同。
由于當代陽曆是在1582年左右被創造出來的,而400多年前的人類無法像我們現在如此精确地測量一年的長度,所以對他們來說,400÷3≈133.33和128年周期的差别其實不大。
第二個原因是因為對沒有網絡的當時來說,一種曆法的傳播度遠比精确度更重要。4/25/100/400 遠比 4/32/128更好記憶,也就會更容易讓更多人将這種曆法作為預設的曆法使用。
而第三個原因,則是因為前面提到回歸年365天5時48分46秒這個長度,本身是在變動的。取決于回歸年測量點(中國傳統曆法的冬至-冬至 或者 羅馬用的春分-春分)的不同,這個數值是不一樣的。而太陽和地球相對的旋轉、地球自轉的長度也是會變化的。
這三大原因使得陽曆的制定不是一個單純的數學問題,比起制定一個“理論上”可以精确運行幾千年的曆法,不如結合天文觀測後再開會決定是否要額外進行時間上的修正。
由于從儒略曆調整到格裡高利曆,1582年10月4日直接跳到10月15日
細心的讀者可能注意到了,儒略曆中每個月的劃分和現在不同。當年,恺撒将七月(July)以自己的名字(Jules)命名,他的繼任者屋大維覺得這主意不錯,于是便将八月(August)以自己的稱号(Augustus)命名。隻不過八月是小月,隻有30天,為了顯示自己與恺撒平起平坐,屋大維就強行從二月抽出來一天加在八月,順帶改了後面九月到十二月的大小月順序。最終便有了現在的“一三五七八十臘,三十一天永不差,四六九冬三十日,隻有二月二十八”。
陰曆
我們平時所謂的陰曆其實指的是農曆,與這裡的陰曆不同,伊斯蘭教曆法(回曆)就是陰曆,筆者以此為例解釋。一個朔望月是29日12時44分2秒,回曆規定,12個月為一年,單數月30天,雙數月29天,這樣平均下來每個月是29.5天,每個月少了2640秒(44×60=2640),一年少了31680秒。此處,我們換個思路,一年少了31680秒相當于少了多少天呢?
,也就是說,按照回曆,一年少了
天,那麼30年就是少了11天,隻需要在30年中加上11天就沒有偏差了。為了每年的偏差不至于太大,這11天就分散在30年中的不同年份,回曆規定,第2、5、7、10、13、16、18、21、24、26和29年為閏年,在12月份多一天。
為紀念穆罕默德于公元622年率穆斯林由麥加遷徙到麥地那這一重要曆史事件,伊斯蘭教第二任哈裡發歐麥爾決定把該年定為伊斯蘭教曆元年,并将伊斯蘭教曆命名為“希吉來”(阿拉伯語“遷徙”之意)。以阿拉伯太陽年歲首(即儒略曆公元622年7月16日)為伊斯蘭曆元年元旦。伊斯蘭教曆的平年354天,閏年355天,30年中有11個閏年,其最大的特點是不置閏月。
根據計算可以知道,陰曆的準确度是非常高的,但是為什麼沒有大範圍推廣呢?各位讀者回想一下,現在一年365天,四季所對應的月份基本上是固定的,而陰曆一年隻有354天,就算是閏年也隻是355天,一年下來就相差十多天,十年就相差一百多天,四季對應的月份是變化的,這對于生産生活來說頗為不便。例如,回曆的九月是齋月,白天斷絕飲食,沐浴禱告,最後一天還有開齋節,而從公曆來看,回曆的齋月每3年就要往前挪一個月,在不同的季節過節(腦補一下在夏天過春節,可能還挺有意思的)。這一點根本上是因為陰曆的制定沒有考慮太陽的周年視運動,四季的劃分并沒有被考慮在内,因而造成了月份的漂移。
陰陽曆
我們的農曆便是陰陽曆的一種,綜合考慮了太陽的周年視運動和月相變化。農曆的月份與陰曆的月份相同,單數月30天,雙數月29天,那如何兼顧太陽的周年視運動呢?這便是我國古人發明的二十四節氣系統。
二十四節氣表
由于冬至這天的正午太陽高度是全年最低的,所以可以通過測量圭表的影長來确定冬至日,兩個冬至日之間就是一個回歸年,然後将這樣得到的回歸年等分為24段。根據前文我們已經知道一個回歸年相當于365.2422天,那麼這樣得到的一段就相當于15.2184天(365.2422÷24≈15.2184)。這24段由12個節氣和12個中氣相間排列組成,相鄰兩個節氣間隔30.4368天(15.2184×2=30.4368),而一個朔望月相當于29.5306天,那麼一個節氣加一個中氣就比一個朔望月長了0.9062天(30.4368-29.5306=0.9062)。
二十四節氣實際上就是将地球繞日公轉的軌迹等角度分為24份,地球在每個節氣轉過的角度都是15度。由于地球繞日公轉的速度不同,靠近太陽的時候較快,遠離太陽的時候較慢,導緻農曆三月到七月比較容易置閏,元月以及九月到十二月則很難置閏。
其結果便是,假如剛開始節氣在月初第一天,中氣就在月中,由于這一對節氣和中氣比這個月長了0.9062天,那麼下一對節氣和中氣就會在下個月後移一天。每過一個月就會後移一些,直到節氣剛好在這個朔望月的中間,前一個中氣在上個朔望月的最後一天,後一個中氣在下個朔望月的第一天。這個月沒有了中氣,這就意味着偏差已經足夠大了,我國農曆規定,每逢遇到缺少中氣的月份,便緊接着多加一個閏月,那麼農曆這一年就變成了13個月,從公曆的角度來看,這一年的除夕就會來得比較晚。
總的來看,農曆是以陰曆為基礎,以回歸年作為檢驗偏差的标尺,通過二十四節氣的形式來實時監測朔望月與回歸年的偏差,不得不為老祖宗的智慧所折服。
閏秒
閏秒雖然也有一個“閏”字,但其實和前面提到的閏年和閏月不同,與曆法并無關聯。
我們在前面基于地球自轉得到了一天的定義,也就是平太陽日,并由此定義了平太陽時、平太陽分和平太陽秒,那麼這裡的“一秒”本質上是由地球自轉所決定。然而,在上世紀的國際計量大會上,“一秒”被重新定義為“铯-133原子基态的兩個超細能級之間躍遷所對應輻射的9192631770個周期的持續時間”,這樣的一秒被稱為原子秒。平太陽秒和原子秒是兩個截然不同的過程得到的定義,自然不會嚴格相等。
铯原子束管
其實,如果平太陽秒與原子秒之間的偏差是個定值的話,我們也可以像曆法那樣協調二者關系。隻不過,由于月球對地球的引力等因素,地球的自轉速度并不一緻,且在一點點變慢,當然,這也是人們改用铯原子重新定義一秒的原因。現如今,每當平太陽秒與原子秒相差超過0.9秒,我們就會加減1閏秒,由于地球自轉速度的不均勻,對閏秒的加減并無規律。
有正閏秒時,就會出現“59分60秒”;有負閏秒時,就會去掉“59分59秒”
對于大部分人來說,人生多一秒和少一秒的差别真的不大,但是對于計算機領域來說,多一秒和少一秒可能就會帶來災難。由于閏秒的定義來自于精确的絕原子鐘和觀測地球自轉之間的時間差,而觀測數值會因各種原因産生不确定性,閏秒的加減并無規律,全由幾個國際組織在發生的6個月前決定,所以在編寫程序時就無法将這樣的時間調整提前設置好。
世界時和标準時的偏差變化表,每條豎線代表了一次閏秒。可以說閏秒存在的目的就是為了讓這個值維持在±0.8秒内。(Credit: Wikipedia)
計算機領域廣泛使用的UNIX time,定義為從UTC1970年1月1日0時0分0秒起至現在的總秒數,(例:北京時間2022年1月1日0點0分1秒對應的UNIX time為1640995201)就因為閏秒的存在需要特殊設計來保證全球萬千電腦的正常運轉。如果你是UNIX time的設計者你會怎麼處理閏秒呢?你有選擇一:計算每個閏秒,和選擇二:忽略每個閏秒。
計算每個閏秒代表UNIX time真實體現了1970年到現在經過的原子秒數,好處是對計算機來說,“時間”永遠會均勻的正向流動,且變化速率永遠是均勻的。但如果你需要将這個“時間”和人類熟悉的年月日時分秒進行轉換,你需要知道1970年到現在每次的閏秒,進行對應的加減,才能得到年月日時分秒格式下正确的時間。
忽略每個閏秒的UNIX time則是我們選擇的道路,和第一種選擇相反,它确保了換算的簡易性,但也同時使得UNIX time不保證“時間”是永遠向“未來”的,也不保證電腦上的一秒和原子秒的長度永遠是對應的。最知名的問題就是2012年歐美大型論壇網站Reddit離線了一個半小時。隻要一個龐大電子系統裡面任何一部分沒有考慮到“時間可能會重複”這個問題,就有可能導緻整個系統的崩潰。
當然各個大公司也已經吸取教訓以減少此類問題對自己系統的影響。比如說美國科技巨頭Google 2008年就推出了Leap Smear,在閏秒發生的前後一小時将每秒長度稍稍進行改變來避開“時間”往回,或者“時間”暫停的問題。安卓手機如果是向Google的NTP Server(網絡時間協議服務器) 同步時間,也會觀察到遇到閏秒比起顯示12:59:59→12:59:60→00:00:00自己的手機會自行直接從12:59:59變成00:00:00。此外,亞馬遜旗下的AWS也是采取一樣的做法。
1971年國際計量大會通過決議,每當平太陽秒與原子秒相差超過0.9秒,國際地球自轉服務組織(IERS)就負責加減1閏秒,圖為1972年至今的閏秒一覽表。
對此,有人主張廢除閏秒,一律采用“原子時”,為高科技領域保駕護航;有人主張保留閏秒,維系時間與太陽之間的聯系。下一次決定閏秒存廢問題将會是2023年的世界無線電通信大會,不知道各位讀者主張哪一方呢?
結語
人類的曆法結合了自然(源自天體運行)和人文(最終是給人看的)兩大因素,實在是一個龐大的、一篇文章說不完的東西。
但還好我們日常不用擔心這些事情,因為有無數天文領域的前輩幫我們進行了計算、總結,我們隻需好好過日子。
新的一年
這是我們不變的約定
▼
來源:牧夫天文
作者:imufu
編輯:華
關注“廣東共青團”B站、抖音、微博
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!