愛伊米

手機日期只能設定到2038年?這背後有個大問題……

世界末日到底是哪一天?這個無厘頭的問題一直有著各種各樣的離奇答案。當你開啟手機系統設定(不是日曆),關閉自動設定時間,往未來的方向滑動數字時,你會發現時間停在了2038年。

手機日期只能設定到2038年?這背後有個大問題……

小米、華為可以設定到2037年12月31日,iPhone也只多兩天

不僅是手機,在電腦上,當你嘗試將時間從2037年再往上調整時,會發現不管怎麼按設定按鈕,日期都不會繼續改變。

手機日期只能設定到2038年?這背後有個大問題……

日期調整超過2038年時,會停在2038年1月1日

2038年到底會發生什麼?為什麼各種裝置都無法“逾越”2038年?在網上搜尋2038,你還能發現有人專門設定了倒計時網頁。這其中包含了一個更加精確的時間:

2038年1月19日 3點14分7秒

。而下一秒,你的電子裝置將會

穿越回到1901年

著名的

“2038問題”

,將在此刻爆發。

手機日期只能設定到2038年?這背後有個大問題……

到“2038年問題”發生,還剩……

2038年,時間“摧毀”系統

問題發生在2038年1月19日 3點14分7秒的下一秒。這一天的03:14:08不會到來,迎接你的將會是

1901年12月13日20:45:52

手機日期只能設定到2038年?這背後有個大問題……

使用指令碼模擬系統時間,會出現時間的跳變(平臺 Debian GNU/Linux (核心 2。4。22))丨William Porquet/deepsky。com

對於很多電子裝置而言,這是個毀滅性的打擊。檔案的建立與修改、應用軟體的執行、網路系統的同步……

時間作為一個關鍵數值,在整個電子系統裡起著絕對重要的作用

。因此有一陣子蘋果手機的語音助手Siri,還把這一天當成了“世界末日”。為什麼是這一天?Siri回答中的關鍵詞也給出了答案。

手機日期只能設定到2038年?這背後有個大問題……

早期Siri對於世界末日問題的回答(新版本系統已無此回答)

Unix、32位,這兩個詞讓2038年的這一天註定成為末日。Unix是一種作業系統,這種系統中計時方式是以1970年1月1日 00:00:00為基準,按秒為單位進行增減。比如到2022年1月1日0點,只需要

用基準值加上1640966400秒

。而我們現在使用的安卓、蘋果系統都屬於類Unix系統,採用了同樣的方案。

電子系統使用0和1對資料進行儲存,也就是二進位制。如果只用1位數,只能表示0和1,如果2位數,則可以用00、01、10、11分別表示0、1、2、3這四個數。隨著位數的增加,二進位制可以表示的數也越來越大,但總會遇到上限。如果用32個0、1儲存數字,第一位表示符號,

0代表+,1代表-

,則剩下31位

最大可以表示

2147483647

。在計算機資源非常寶貴的年代,用32位來放置時間,已經很夠用了。

手機日期只能設定到2038年?這背後有個大問題……

從上到下分別是二進位制秒數、對應的十進位制秒數、32位Unix系統時間、實際時間。超過2147483647後,符號位會變成1(負號),整個數字會突然發生翻轉,回到1901年。丨Pemu/Wikicommons

這個存在於將來的問題,它會給我們帶來怎樣的影響?回溯過往,

一次又一次的“千年蟲”問題已經給了我們一些預告

千年之外的千年蟲

2000年,千禧年。而在很多應用程式看來,

這一年會變成1900年

同樣因為硬體資源寶貴,早期程式使用了年份的後兩位數字來表示日期,而

前兩位數都預設為19

。這個不起眼的時間問題,在整個世界引發了巨大的關注。政務系統、銀行系統、航空系統等多個系統都可能受到影響而失效。全球各地對這一問題進行了響應,試圖解決這一問題。我國多次發文強調這一問題的重要性。美國也推出了有關千年蟲問題的法案,以敦促各行業共享資訊解決此類問題。

手機日期只能設定到2038年?這背後有個大問題……

全球各地對“千年蟲”採取行動丨人民日報網路版

多虧人們對“千年蟲”的高度重視,使得這一問題在集中爆發前得以解決。但在此之後,類似“千年蟲”的事件卻依然層出不窮。

2010年的第一週,德國約3千萬張銀行卡同時“失效”。持卡人不僅無法直接刷卡消費,連在自動取款機上取錢都成問題。這不僅影響了本國居民的生活,也使得在外度假的德國人滯留在當地。

由於不同編碼方式存在差異,

2010在德國的銀行系統中被錯誤地識別成2016

。銀行卡也因此“被過期”了。同樣的情況出現在使用Windows Mobile系統的手機上:

你在2010年第一天收到的新年簡訊,會被系統顯示成2016年

德國加速修復了銀行系統,所幸沒有造成更大的損失。但放眼太空,事情就沒那麼簡單了。2013年9月,航天器Deep Impact突然失聯,迫使美國航空航天局宣佈相關探測任務正式結束。Deep Impact的首席任務科學家 Mike A‘Hearn認為,這是一個“千年蟲問題”。

航天器的部分軟體無法正確識別2013年8月11日之後的日期,導致計算機不斷重啟

。最終,科學家們失去了航天器的訊號。

手機日期只能設定到2038年?這背後有個大問題……

Deep Impact與坦普爾1號彗星相遇模擬圖丨NASA

就在今年年初,“2022年蟲”讓微軟的程式設計師體會了新年大加班。1月1日,微軟的郵件服務系統Exchange突然中斷,使用該服務的使用者都無法傳送電子郵件。

微軟隨後給出了宣告,稱該問題與日期檢查失敗以及新年的變化有關

。簡單點說,和2038問題一樣,時間“溢位”了。好在微軟團隊加班加點,在當天解決了該問題。

在未來,“類千年蟲”問題一定還會出現。對於可以預料的問題,人們已經開始嘗試提供解決方法。比如使用新的格式儲存時間資訊。與此同時,系統團隊提供的新核心也在解決32位平臺上的“歷史問題”。你也不用太擔心,畢竟到那時,你應該已經換了好幾波手機了。

不過,再遇到類似的突發Bug也很正常。

因為世界上總在發生情理之中、意料之外的事情

參考文獻

[1]Year 2038 Problem Countdown。 https://gregnk。com/2038/

[2]The Project 2038 Frequently Asked Questions (FAQ)。 http://www。deepsky。com/~merovech/2038。html#What_operating_systems_and_platforms_are_affected_by_it

[3]Why does Siri say the world will end on January 2038? https://www。quora。com/Why-does-Siri-say-the-world-will-end-on-January-2038

[4]Unix time。 https://en。wikipedia。org/wiki/Unix_time

[5]Unix Time Stamp - Epoch Converter。 https://www。unixtimestamp。com/

[6]Unix-like。 https://www。computerhope。com/jargon/u/unix-like。htm

[7]2038年問題。 https://zh。wikipedia。org/wiki/2038%E5%B9%B4%E9%97%AE%E9%A2%98

[8]中國解決計算機2000年問題的進展情況。 http://www。scio。gov。cn/xwfbh/xwbfbh/wqfbh/1999/1201/Document/328000/328000。htm

[9]話說“千年蟲”。 http://www。people。com。cn/item/hs2000/july。html

[10]Clinton Urges Americans To Act On Y2K Problem。 https://edition。cnn。com/ALLPOLITICS/1998/07/14/clinton。y2k/

[11]Y2K-type bug hits German cash, credit cards。 https://www。eetimes。com/y2k-type-bug-hits-german-cash-credit-cards/

[12]Carry cash as well as a card, says German bank association。 https://www。computerworld。com/article/2759697/carry-cash-as-well-as-a-card——says-german-bank-association。html

[13]Windows Mobile Bug Dates Messages from 2016。 https://www。wired。com/2010/01/windows-mobile-bug-dates-messages-from-2016/

[14]NASA Declares End to Deep Impact Comet Mission。 https://www。nationalgeographic。com/science/article/130920-deep-impact-ends-comet-mission-nasa-jpl#:~:text=NASA%20officials%20declared%20the%20Deep,July%204%20of%20that%20year。

[15]Exchange Year 2022 Problem: FIP-FS Scan Engine failed to load – Can’t Convert “2201010001” to long (2022/01/01 00:00 UTC)。 https://borncity。com/win/2022/01/01/exchange-fip-fs-scan-engine-failed-to-load-cant-convert-2201010001-to-long-1-1-2022/

[16]Email Stuck in Exchange On-premises Transport Queues。 https://techcommunity。microsoft。com/t5/exchange-team-blog/email-stuck-in-exchange-on-premises-transport-queues/ba-p/3049447

作者:Owl

編輯:窗敲雨

科學稽核:Andrija

一個AI

拔插頭不能解決所有問題!

手機日期只能設定到2038年?這背後有個大問題……