為什麼計算機時間要從1970年1月1日開始算起
導讀 | 今天我們來討論一個非常有意思的事,那就是你知道為什麼計算機時間和眾多的程式語言的時間都要從1970年1月1日開始算起呢,時間計時起點到底為什麼是 1970年1月1號呢?我想大家應該都知道,但是我估計大家幾乎大部分都沒有想過這個問題。我們就一起來聊聊,這是為什麼? |
很多程式語言起源於UNIX系統,而UNIX系統認為1970年1月1日0點是時間紀元,所以我們常說的UNIX時間戳是以1970年1月1日0點為計時起點時間的。
說了這個懶人的解釋,估計大家還沒有懂得真正的意思。所以我們接下來深入的瞭解一下。
最初計算機作業系統是32位,而時間也是用32位表示。
1.System.out.println(Integer.MAX_VALUE); 2.2147483647
Integer 在JAVA內用32位表示,因此32位能表示的最大值是2147483647。另外1年365天的總秒數是 31536000,2147483647/31536000 = 68.1,也就是說32位能表示的最長時間是68年,從1970年開始的話,加上68.1,實際最終到2038年01月19日03時14分07秒,便會到達最大時間,過了這個時間點,所有32位作業系統時間便會變為 10000000 00000000 00000000 00000000,算下來也就是1901年12月13日20時45分52秒,這樣便會出現時間迴歸的現象,很多軟體便會執行異常了。
到這裡,我想問題的答案已經顯現出來了,那就是:因為用32位來表示時間的最大間隔是68年,而最早出現的UNIX作業系統考慮到計算機產生的年代和應用的時限綜合取了1970年1月1日作為UNIX TIME的紀元時間(開始時間),至於時間迴歸的現象相信隨著64為作業系統的產生逐漸得到解決,因為用64位作業系統可以表示到 292,277,026,596年12月4日15時30分08秒,相信我們的N代子孫,哪怕地球毀滅那天都不用愁不夠用了,因為這個時間已經是千億年以後 了。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2949912/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 為什麼計算機時間要從1970年1月1日開始算起?計算機
- 為什麼計算機時間和眾多程式語言要從1970年1月1日開始算起計算機
- 為什麼程式要從0開始計數
- 為什麼程式設計中發現許多時間以1970年1月1日為基準程式設計
- 【敏捷0】敏捷專案管理-為什麼從敏捷開始?為什麼從PMI-ACP開始?敏捷專案管理
- 程式設計師為什麼要時刻保持危機感?程式設計師
- 為什麼資料資產管理首先從頂層設計開始
- 計算機為什麼要用補碼計算機
- 想學計算機從什麼學起?計算機
- 彭民德:《電子計算60年》(4) 從學習蘇聯電子管計算機開始計算機
- 為什麼陣列下標是從0開始?陣列
- 設計師為什麼要學程式設計,開發者為什麼要學設計?程式設計
- 為什麼要虛擬化,為什麼要容器,為什麼要Docker,為什麼要K8S?DockerK8S
- 將來是否要從事計算機計算機
- 為什麼程式設計師應該從現在就開始看書程式設計師
- 常見計算機從零開始 D.認識計算機的組成(轉)計算機
- SSL延遲計算:為什麼HTTPs比HTTP要慢?HTTP
- 程式碼之間為什麼要加空格?
- 從什麼時候開始,玩家成了遊戲裡的“工具人”?遊戲
- 為什麼要貢獻開源
- 從計算機網路開始,分析ftp報文內容計算機網路FTP
- 為什麼計算機採用補碼進行運算?計算機
- 企業為什麼要用雲端計算?企業購買雲端計算時需要注意什麼?
- 為什麼程式設計師不擅長估算時間程式設計師
- 在LoadRunner中為什麼要設定思考時間和pacing?
- 為什麼我要遷移 SpringBoot 到函式計算Spring Boot函式
- 為什麼我要遷移SpringBoot到函式計算Spring Boot函式
- 什麼是前端開發?為什麼要學前端開發?前端
- 5分鐘告訴你雲端計算的前景,為什麼要學習雲端計算
- 計算機中為什麼要用二進位制計算機
- 你的程式設計能力從什麼時候開始突飛猛進? 我的回答:2013年,我開始喜歡程式設計了。程式設計
- 為什麼你該開始學習程式設計了?程式設計
- 常見計算機從零開始 F.視窗介面(轉)計算機
- 教學系統開發時為什麼要配置小班課?有什麼優勢?
- Go 為什麼要設計 iota 常量?Go
- 雲端計算、服務-雲端計算起源探析-by小雨
- 為什麼計算機對浮點型數字計算存在誤差計算機
- 我們為什麼要從 HTTPRunner 轉向 MeterSphereHTTP