日期工夫從為什麼是從1970年1月1日初步的?

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

I suspect that Java was born and raised on a UNIX system.

UNIX considers the epoch (when did time begin) to be midnight, January 1, 1970.

上面是說java來源於UNIX體系,而UNIX以為1970年1月1日0點是時光紀元。

但這依然沒很好的說明”為什麼”,出於好奇,持續Google,總算找到了謎底:

http://en.wikipedia.org/wiki/Unix_time

這里的說明是:

最初盤算機操縱體系是32位,而時光也是用32位表現。

System.out.println(Integer.MAX_VALUE);

2147483647

Integer在JAVA內用32位表 示,是以32位能表現的最年夜值是2147483647。

別的1年365天的總秒數是31536000,

2147483647/31536000 = 68.1

也就是說32位能表現的最長時光是68年,而現實上到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的紀元時光(開端

時光),而java天然也遵守了這一束縛。

至於時光回回的現象信任跟著64為操縱體系的發生逐漸獲得解決,由於用64位操縱

體系可以表現到292,277,026,596年12月4日15時30分08秒,信任我們的N代子孫,哪

怕地球撲滅那天都不消愁不敷用了,由於這個時光已經是千億年今後了。

最後一個題目:上面System.out.println(new Date(0)),列印出來的時光是8點而非0點,

原因是存在體系時光和當地時光的題目,實在體系時光依然是0點,只不外我的電腦時區

設置為東8區,故列印的成果是8點。

‘,

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!