Java時間為什么從1970-01-01 00:00:00 000開始


不僅僅是Java,幾乎所有的語言的時間都是從這一刻開始算起的.

原因:java起源於UNIX系統,而UNIX認為1970年1月1日0點是時間紀元.


最初計算機操作系統是32位,而時間也是用32位表示。
System.out.println(Integer.MAX_VALUE);#int的最大值
2147483647

 

Integer在JAVA內用32位表示,因此32位能表示的最大值是2147483647。另外1年365天的總毫秒數是
365*24*60*60*1000=31536000

2147483647/31536000 = 68.1

也就是說32位能表示的最長時間是68.1年,過了這個時間點,所有32位操作系統時間便會變為
10000000 00000000 00000000 00000000,所以采用時間類型是long類型

 


因為用32位來表示時間的最大間隔是1.6年,而最早出現的UNIX操作系統考慮到計算
機產生的年代和應用的時限綜合取了1970年1月1日作為UNIX TIME的紀元時間(開始
時間),而java自然也遵循了這一約束。

 


System.out.println(Long.MIN_VALUE);//最大值
9223372036854775807

至於時間回歸的現象隨着64位操作系統的產生逐漸得到解決,因為用64位操作
系統可以時間表示到292278994-08-17 15:12:55 807,相信我們的N代子孫,哪
怕地球毀滅那天都不用愁不夠用了,因為這個時間已經是億年以后了。

 

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
Date date=new Date();
date.setTime(0);
System.out.println(sdf.format(date));

打印結果: 1970-01-01 08:00:00 000 這是因為我門在東八區,比格林威治

0時區早8個小時導致的。


免責聲明!

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



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