什麼是閏秒?
閏秒是一種偶爾對協調世界時(UTC)進行的單秒調整,而UTC是您的手機、伺服器和衛星所同步的全球時間標準。當插入一個閏秒時,該日的最後一分鐘會包含61秒而非60秒——時鐘會先經過23:59:60,然後才跳至00:00:00。
閏秒聽起來微不足道,但事實並非如此。那一秒曾經導致大型網站崩潰、航班停飛,並引發了物理學家、天文學家和軟體工程師之間長達數十年的爭論。2022年,全球時間管理機構終於投票決定廢除閏秒。以下說明閏秒到底是什麼、為何存在,以及為何它即將被淘汰。
為什麼會存在閏秒?
問題歸結於兩種測量時間的方式並不完全一致。
原子時間極其穩定。 自1967年以來,秒的定義一直基於銫-133原子的振動——每秒9,192,631,770次振動。全球的原子鐘網絡維持著國際原子時(TAI),其規律性驚人:既不會加快也不會減慢。
地球的自轉並不穩定。 以地球實際自轉測量的一天長度略有變化。潮汐摩擦、地核運動以及冰蓋融化等質量變化都會影響自轉速度。長期來看,地球整體上正在減慢,因此天文日會比86,400原子秒略長。這種基於自轉的時間稱為UT1。
如果放任不管,建立在穩定原子秒上的UTC和與實際太陽位置相關的UT1會逐漸偏離。為了保持它們一致,規則很簡單:UTC與UT1的差異絕不能超過0.9秒。 當差距接近這個極限時,就會在UTC中插入一個閏秒,讓原子時間「等待」較慢自轉的地球跟上。
因此,閏秒本質上是一種手動修正,使我們精確的原子鐘與我們實際居住的這顆搖擺行星保持同步。
閏秒的簡史
閏秒於1972年引入,當時UTC被重新定義為基於原子時間,同時仍與地球自轉掛鉤。
自那時起,截至2016年已增加了27個閏秒。迄今為止,每個閏秒都是正閏秒——增加一秒,從未減少——因為在該時期地球自轉普遍落後於原子時間。最近一次閏秒插入是在2016年12月31日的23:59:60(UTC)。
此後出現了近七年的顯著間隔,因為近年來地球自轉實際上略有加快——足以讓科學家首次認真討論負閏秒(減少一秒而非增加一秒)的可能性,這種情況從未發生,而且許多工程師對它的恐懼甚至超過了普通的閏秒。
誰決定何時插入閏秒?
閏秒並非按固定日曆安排。它們由總部位於巴黎附近的國際地球自轉與參考系統服務(IERS) 宣布,該機構持續監測地球自轉。
當UT1與UTC的差距接近0.9秒時,IERS會發布公告——通常提前約六個月——宣布將插入一個閏秒。按照慣例,插入發生在6月30日或12月31日(UTC)的末尾。
這六個月的提前通知時間是工程問題的關鍵:時間表是不規則且不可預測的。你無法像計算閏年那樣寫出公式來預測下一個閏秒何時發生。你必須等待IERS宣布,然後確保系統中的每個時鐘都知道這個資訊。
為什麼工程師討厭閏秒?
對大多數人來說,多一秒幾乎察覺不到。但對於期望每分鐘恰好有60秒的電腦來說,61秒的一分鐘就是一個地雷。
最著名的事件發生在2012年6月30日,當時插入了一個正閏秒。在那一刻,多個系統接連崩潰。Reddit 以及其他大型網站癱瘓。問題追溯到Linux核心處理時鐘在那一瞬間倒退的方式——它觸發了一種失控狀態,導致伺服器CPU佔用率飆升。依賴受影響軟體的航空公司訂票系統也報告了中斷,導致登機手續延誤。在更早的閏秒中也出現過類似的問題。
根本問題在於結構性的:
- 事件罕見,因此處理閏秒的代碼路徑幾乎從未被執行,也極少在真實條件下測試。
- 時間看起來會停滯或重複,而許多軟體默默地假設時間只會單調地向前推進。
- 時間表不可預測,因此系統必須獲取並信任外部公告,而非自行計算調整。
由於現代的故障可能波及金融市場、電信網路和雲端平台,一次處理不當的秒鐘可能造成巨大損失。
Google 的「閏秒抹平」解決方案
與其突然一次性插入閏秒,Google 率先提出了一種稱為閏秒抹平(leap smear) 的方法。Google 的伺服器並非在午夜插入一整秒,而是將修正分散到一個較長的時間窗口——通常為事件前後的約24小時——透過讓每一秒變得難以察覺地更長(或更短)。
在抹平期間,沒有任何時鐘會顯示23:59:60,也沒有任何時鐘會倒退;時間只是在一天內運行得「稍慢」一些,直到多出的那一秒被悄悄吸收。軟體看到的是平滑、單調的時鐘,永遠不會遇到危險的邊緣情況。Amazon、Meta 等公司也採用了類似的抹平策略,這已成為大規模系統的實際生存技巧。
缺點是:抹平時鐘在數小時內刻意與官方UTC不一致——對大多數服務來說沒問題,但當你需要與未抹平的系統進行協調時就會很頭痛。這是一種針對產業日益認為根本不該存在的問題的權宜之計。
如果您使用自紀元時間(epoch time),請注意Unix 時間戳根本不計算閏秒——Unix 時間只是假設每一天恰好有86,400秒,這也是現實中的調整為何會帶來如此多摩擦的原因之一。
2035年決議:廢除閏秒
這場辯論在2022年國際度量衡大會(CGPM)——負責管理公制系統和秒的定義的國際機構——達到了高潮。
與會代表通過了一項里程碑式的決議:到2035年將停止增加閏秒的做法。 從那時起,UTC將被允許偏離UT1超過目前的0.9秒限制,而容許範圍將在之後重新談判——很可能允許差距在數十年內逐漸擴大,或許達到一分鐘或更多,然後才會考慮任何修正。
實際上,這意味著UTC將成為一個平滑、連續的時間尺度,不再有令人意外的61秒分鐘。需要地球自轉時間的天文學家仍然可以直接使用UT1;而所有運行電腦的人則終於可以得到一個可以信賴的穩定時鐘。這項改變是以一個微小、緩慢累積的與太陽的偏差,換取消除一個反覆出現的全球技術風險根源。
常見問題
是否曾經有過減少而非增加的閏秒?
沒有。自1972年以來插入的所有27個閏秒都是正閏秒——增加一秒。負閏秒(從23:59:58直接跳到00:00:00)從未發生過,儘管地球最近的自轉加速曾短暫使這種可能性變為現實,但2035年的決議讓整個問題變得沒有意義。
閏秒會影響時區嗎?
不會直接影響。時區是透過像IANA 時區資料庫這樣的資料庫管理的固定UTC偏移量。閏秒調整的是UTC本身,因此所有時區會在同一瞬間同步偏移——時區之間的偏移量永不改變。
我的電腦時鐘會在2035年改變嗎?
使用者不會看到明顯變化。2035年後,時鐘只是不再接收偶爾的閏秒。UTC將在多年內逐漸偏離天文時間,但這種偏差在日常生活中小到無法察覺。
UTC、TAI和UT1有什麼區別?
TAI是純粹的原子時間,極其穩定。UT1是基於地球實際自轉的時間。UTC是日常使用的標準:它像TAI一樣使用原子秒,但透過閏秒保持與UT1一致。截至2016年,UTC比TAI慢37秒。
為什麼不直接讓時鐘和太陽偏離?
這基本上就是2035年決議的做法。兩者偏差的增長非常緩慢——大約每世紀一分鐘——需要好幾代人才會產生影響,到那時可以刻意計劃一次性修正,而不是每幾年打一次補丁。
好奇機器在這些機制之下究竟如何計算時間?在自紀元時間中,閏秒完全消失——試試我們的Unix 時間戳轉換器,看看電腦如何精確追蹤一秒一秒的流逝。