關於Unix時間戳(Unix timestamp)


時間戳是自 1970 年 1 月 1 日(00:00:00 GMT)以來的秒數。它也被稱為 Unix 時間戳(Unix Timestamp)。
 
  Unix時間戳(Unix timestamp),或稱Unix時間(Unix time)、POSIX時間(POSIX time),是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒起至現在的總秒數。Unix時間戳不僅被使用在Unix系統、類Unix系統中,也在許多其他操作系統中被廣泛采用。
 
 
今天我們來討論一個非常有意思的事,那就是你知道為什么計算機時間和眾多的編程語言的時間都要從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代子孫,哪怕地球毀滅那天都不用愁不夠用了,因為這個時間已經是千億年以后 了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM