1. 程式人生 > >為什麽計算機時間要從1970年1月1日開始算起

為什麽計算機時間要從1970年1月1日開始算起

起源 長度 int line 解決 人的 class 女神 計時

1970年1月1日、、、

為什麽計算機時間和眾多的編程語言的時間都要從1970年1月1日開始算起呢,時間計時起點到底為什麽是1970年1月1號呢?我想大部分接觸過計算機的人都知道,但大家幾乎都沒有想過這個問題吧。那我們就一起來聊聊,這是為什麽? 1、最懶的解釋 很多編程語言起源於UNIX系統,而UNIX系統認為1970年1月1日0點是時間紀元,所以我們常說的UNIX時間戳是以1970年1月1日0點為計時起點時間的。 說了這個懶人的解釋,估計大家還沒有懂得真正的意思。所以我們接下來深入的了解一下。 2、深入的了解 最初計算機操作系統是32位,而時間也是用32位表示。 System.out.println(Integer.MAX_VALUE); 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代子孫,哪怕地球毀滅那天都不用愁不夠用了,因為這個時間已經是千億年以後了。

很多編程語言起源於UNIX系統,而UNIX系統認為1970年1月1日0點是時間紀元,所以我們常說的UNIX時間戳是以1970年1月1日0點為計時起點時間的。

最初計算機操作系統是32位,而時間也是用32位表示。
System.out.println(Integer.MAX_VALUE);
2147483647
Integer 在JAVA內用32位表示,因此32位能表示的最大值是2147483647。
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秒,這樣便會出現時間回歸的現象,很多軟件便會運行異常了。

早期Unix等機器都是32位,那麽表示的時間長度有限,只能從1901年到2038年,那麽過了2038年時間就會回到1901年。
64位機器大約是2920億年


2038年一月十八日星期一晚上十點十四分七秒。那一刻,時間將會轉為負數,變成1901年十二月十三日黑色星期五下午三點四十五分五十二秒,

雖然許多人認為UNIX的2038年問題會隨著科技的進步,而將電腦逐步汰換成64位元電腦,因此無須擔心。但我個人相信,在2038年,依然會有許多狀況出現。因為,就事實而言,目前許多UNIX系統都有足夠的能力服役到2038年而毫無問題。因此,如果有意添購電腦主機,而且有預期會使用到那個時候,最好是選購64位元電腦,確認只有世界末日問題(除非您想要把資料流傳給下一個宇宙,那就要另當別論了)。

—————>>>>>I‘m

web developer / designer / 請叫我最美女神

為什麽計算機時間要從1970年1月1日開始算起