Open Ray手記:1970年1月1日的奧妙

如果你使用iPhone,若有朋友叫你試試把手機的日期改成1970年1月1日,千萬不要照做。因為最近iOS被發現一個新臭蟲(Bug),如果日期被改成1970年1月1日,手機將變磚,不能啟動。就算用電腦把手機重設,也不能開機,問題十分嚴重。

說這問題很嚴重,也有點言過其實。試想,有誰會無端白事走去把日期改成1970年?加上大部分手機都使用自動日期,根本毋須手動設定。因此改日期而弄壞iPhone的問題雖然存在,但中招的人極少,影響輕微。

究竟1970年1月1日有甚麼特別?為甚麼手機轉成這個日期,便會出事?如果你用過Unix電腦,或懂得編寫Unix程式,肯定應該知道Unix Timestamp這東西。以往的Unix電腦,為了方便計算日期,把1970年1月1日的第1秒定為1,之後每秒陸續加下去,以秒數來計算日期。

由於Timestamp從1970年1月1日開始,因此只能計算該日以後的日子,如果程式嘗試計算早於該日的日子,Timestamp便會變成負數。時間當然不會是負數,因此當Timestamp變成負數的話,程式便會出錯。

新一代的軟件已經開始少用Unix Timestamp了。這就像千年蟲問題,現在我們已經甚少會用兩位數來表達年份了。然而,MacOS和iOS都是Unix作業系統的分支,因此多少仍會用Unix Timestamp。不過,即使用它,也極少機會因此而令手機變磚。有關方面正在調查問題所在,並嘗試解決,用戶只要不自行亂改日期,便不會出問題。

電郵:ray@openrice.com

鍾偉民(Ray)•飲食網站創辦人