Time
時間的盡頭會發生什麼?
我很好奇為什麼使用有符號整數值來保存 Unix 時間。顯然,使用無符號整數會更有意義,因為時間不能倒退,所以時間為負值是不可能的。然而,在 2038 年 1 月 19 日,Unix 時間將溢出,正如我們許多人所知,這將是時間的終結。我們將從 2,147,483,647 變為 -2,147,483,648……不好。
那麼,為什麼要使用有符號整數?當時間快要結束時,要解決這個問題有多難?
OpenBSD 前段時間從 32 位時間值轉變為 64 位時間值,這為時間結束提供了一些喘息的空間。此修復的難度將取決於 unix 以及它的支持程度(以及距離 2038 年時間移動的距離)。
% date -r $((2**31)) Tue Jan 19 03:14:08 GMT 2038 % date -r $((2**51)) Mon Jun 19 13:54:08 GMT 71358665