js中的時間系統(tǒng)

1.引言
在進(jìn)入主題之前,我們先來了解一下什么是世界時(UT)和協(xié)調(diào)世界時(UTC)
世界時,即格林尼治平太陽時間,指格林尼治所在地區(qū)的標(biāo)準(zhǔn)時間,之所以選這個地方作為世界時,是因?yàn)樵谑呤兰o(jì),格林威治天文臺為了海上霸權(quán)的擴(kuò)張計(jì)劃而進(jìn)行天體觀測。1675年舊觀測所(Old Royal Observatory)正式成立,到了1884年決定以通過格林威治的子午線作為劃分地球東西兩半球的經(jīng)度零度。對全球而言,這里所設(shè)定的時間是世界時間參考點(diǎn),全球都以格林威治的時間作為標(biāo)準(zhǔn)來設(shè)定時間,這便是格林尼治標(biāo)準(zhǔn)時間(GMT)。
事實(shí)上,世界時并非是明確的(當(dāng)需要好于幾秒的準(zhǔn)確性時),由于它是通過恒星觀測,由恒星時推算的,所以在地球自轉(zhuǎn)均勻時,它確實(shí)是一個均勻的時間系統(tǒng);然而,科學(xué)家現(xiàn)已證實(shí),地球自轉(zhuǎn)實(shí)際上是不均勻的,緩緩減速的,所以世界時是一種非均勻時。但即使是在1960年后被歷書時取代后,世界時仍然是各種領(lǐng)域的重要數(shù)據(jù)之一。
協(xié)調(diào)世界時,即世界標(biāo)準(zhǔn)時間,是經(jīng)過平均太陽時(以格林威治時間GMT為準(zhǔn))、地軸運(yùn)動修正后的新時標(biāo)以及以「秒」為單位的國際原子時所綜合精算而成的時間,計(jì)算過程相當(dāng)嚴(yán)謹(jǐn)精密,因此若以「世界標(biāo)準(zhǔn)時間」的角度來說,UTC比GMT來得更加精準(zhǔn)。
這套時間系統(tǒng)被應(yīng)用于許多互聯(lián)網(wǎng)和萬維網(wǎng)的標(biāo)準(zhǔn)中,中國大陸、中國香港、中國澳門、中國臺灣、蒙古國、新加坡、馬來西亞、菲律賓、西澳大利亞州的時間與UTC的時差均為+8,也就是UTC+8。
2.Date對象
創(chuàng)建
Date()構(gòu)造函數(shù)有四種基本形式,如下列代碼所示
格式化
可以看到,我們使用Date對象創(chuàng)建出來的時間都是GMT格式的,這種格式基本是沒法直接使用的,我們可以使用Date對象的方法來格式化時間
常用的自定義日期格式函數(shù)
3.關(guān)于js中GMT時間和UTC時間的疑問
上面的代碼輸出我們也看到了,js的時間是基于1970年1月1日的UTC時間,為什么通過控制臺打印的卻是GMT時間呢?
其實(shí),js時間的確是基于UTC(更標(biāo)準(zhǔn))/GMT時間的,但是打印出來的時間會因?yàn)楦鳛g覽器引擎的實(shí)現(xiàn)不同而不同,因?yàn)榭刂婆_打印的其實(shí)是toString執(zhí)行的結(jié)果