導讀 | 今天咱們來討論一個很是有意思的事,那就是你知道爲何計算機時間和衆多的編程語言的時間都要從1970年1月1日開始算起呢,時間計時起點到底爲何是 1970年1月1號呢?我想你們應該都知道,可是我估計你們幾乎大部分都沒有想過這個問題。咱們就一塊兒來聊聊,這是爲何? |
一、最懶的解釋html
不少編程語言起源於UNIX系統,而UNIX系統認爲1970年1月1日0點是時間紀元,因此咱們常說的UNIX時間戳是以1970年1月1日0點爲計時起點時間的。linux
說了這個懶人的解釋,估計你們尚未懂得真正的意思。因此咱們接下來深刻的瞭解一下。編程
二、深刻了解編程語言
最初計算機操做系統是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秒,這樣便會出現時間迴歸的現象,不少軟件便會運行異常了。htm
到這裏,我想問題的答案已經顯現出來了,那就是:由於用32位來表示時間的最大間隔是68年,而最先出現的UNIX操做系統考慮到計算機產生的年代和應用的時限綜合取了1970年1月1日做爲UNIX TIME的紀元時間(開始時間),至於時間迴歸的現象相信隨着64爲操做系統的產生逐漸獲得解決,由於用64位操做系統能夠表示到 292,277,026,596年12月4日15時30分08秒,相信咱們的N代子孫,哪怕地球毀滅那天都不用愁不夠用了,由於這個時間已是千億年之後 了。get