JS 的日期時間在項目中是必定會用到的,所以必須掌握。
UTC 與 GMT 背景
十七世紀,格林威治皇家天文台為了海上霸權的擴張計畫而進行天體觀測。1675年舊皇家觀測所(Old Royal Observatory) 正式成立,到了1884年決定以通過格林威治的子午線作為划分地球東西兩半球的經度零度。觀測所門口牆上有一個標志24小時的時鍾,顯示當下的時間,對全 球而言,這里所設定的時間是世界時間參考點,全球都以格林威治的時間作為標准來設定時間,這就是我們耳熟能詳的「格林威治標准時間」 (Greenwich Mean Time,簡稱G.M.T.)
UTC (Coordinated Universal Time) 世界標准時間,是經過平均太陽時(以格林威治時間GMT為准)、地軸運動修正后的新時標以及以「秒」為單位的國際原子 時所綜合精算而成的時間,計算過程相當嚴謹精密,因此若以「世界標准時間」的角度來說,UTC比GMT來得更加精准。其誤差值必須保持在0.9秒以內,若 大於0.9秒則由位於巴黎的國際地球自轉事務中央局發布閏秒,使UTC與地球自轉周期一致。所以基本上UTC的本質強調的是比GMT更為精確的世界時間標准。
前端通過請求獲取的時間一般都是時間戳格式,這個時間戳一般就是UTC時間,而我們在網頁上需要顯示的是GMT時間。
JS 獲取日期時間
const now = new Date()
通過上述代碼,即可獲得調用代碼一刻的日期及時間,而 now 存放的是UTC時間,若想將其轉為時間戳,語句如下:
const nowTimeStamp = now.valueOf()
UTC所顯示的時間會與當地時間有所差異(除了0時區),若希望得到GMT時間,可以使用 toLocaleString() 函數去轉換,如下:
const nowGMT = now.toLocaleString()
這樣得到的日期和時間便是當地日期與時間了。