完全弄懂GMT、UTC、時區和夏令時

前言

格林威治時間、世界時、祖魯時間、GMT、UTC、跨時區、夏令時,這些眼花繚亂的時間術語,咱們可能都不陌生,可是真正遇到問題,可能又不那麼肯定,不得再也不去查一查,處理完可能過段時間又忘記。今天,咱們完全來梳理一下它們。javascript

1、GMT

什麼是GMT

GMT(Greenwich Mean Time), 格林威治平時(也稱格林威治時間)。前端

它規定太陽天天通過位於英國倫敦郊區的皇家格林威治天文臺的時間爲中午12點。java

GMT的歷史

格林威治皇家天文臺爲了海上霸權的擴張計劃,在十七世紀就開始進行天體觀測。爲了天文觀測,選擇了穿過英國倫敦格林威治天文臺子午儀中心的一條經線做爲零度參考線,這條線,簡稱格林威治子午線。工具

1884年10月在美國華盛頓召開了一個國際子午線會議,該會議將格林威治子午線設定爲本初子午線,並將格林威治平時 (GMT, Greenwich Mean Time) 做爲世界時間標準(UT, Universal Time)。由此也肯定了全球24小時天然時區的劃分,全部時區都以和 GMT 之間的偏移量作爲參考。網站

1972年以前,格林威治時間(GMT)一直是世界時間的標準。1972年以後,GMT 再也不是一個時間標準了。spa

2、UTC

什麼是UTC

UTC(Coodinated Universal Time),協調世界時,又稱世界統一時間、世界標準時間、國際協調時間。因爲英文(CUT)和法文(TUC)的縮寫不一樣,做爲妥協,簡稱UTC。code

UTC 是如今全球通用的時間標準,全球各地都贊成將各自的時間進行同步協調。UTC 時間是通過平均太陽時(以格林威治時間GMT爲準)、地軸運動修正後的新時標以及以秒爲單位的國際原子時所綜合精算而成。blog

在軍事中,協調世界時會使用「Z」來表示。又因爲Z在無線電聯絡中使用「Zulu」做代稱,協調世界時也會被稱爲"Zulu time"。ip

UTC 由兩部分構成:

  • 原子時間(TAI, International Atomic Time):
    結合了全球400個全部的原子鐘而獲得的時間,它決定了咱們每一個人的鐘表中,時間流動的速度。
  • 世界時間(UT, Universal Time):
    也稱天文時間,或太陽時,他的依據是地球的自轉,咱們用它來肯定多少原子時,對應於一個地球日的時間長度。

UTC的歷史

1960年,國際無線電諮詢委員會規範統一了 UTC 的概念,並在次年投入實際使用。資源

「Coordinated Universal Time」這個名字則在1967年才被正式採納。

1967年之前, UTC被數次調整過,緣由是要使用閏秒(leap second)來將 UTC 與地球自轉時間進行統一。

3、GMT vs UTC

GMT是前世界標準時,UTC是現世界標準時。
UTC 比 GMT更精準,以原子時計時,適應現代社會的精確計時。
但在不須要精確到秒的狀況下,兩者能夠視爲等同。
每一年格林尼治天文臺會發調時信息,基於UTC。

4、時區

隨着火車鐵路與其餘交通和通信工具的發展,以及全球化貿易的推進,各地使用各自的當地太陽時間帶來了時間不統一的問題,在19世紀催生了統一時間標準的需求,時區由此誕生。

時區是如何定義的

從格林威治本初子午線起,經度每向東或者向西間隔15°,就劃分一個時區,在這個區域內,你們使用一樣的標準時間。

但實際上,爲了照顧到行政上的方便,常將1個國家或1個省份劃在一塊兒。因此時區並不嚴格按南北直線來劃分,而是按天然條件來劃分。另外:因爲目前,國際上並無一個批准各國更改時區的機構。一些國家會因爲特定緣由改變本身的時區。

全球共分爲24個標準時區,相鄰時區的時間相差一個小時。

time-timezone.png

在不一樣地區,同一個時區每每會有不少個不一樣的時區名稱,由於名稱中一般會包含該國該地區的地理信息。在夏令時期間,當地的時區名稱及字母縮寫會有所變化(一般會包含「daylight」或「summer」字樣)。

例如美國東部標準時間叫:EST,Estern Standard Time;而東部夏令時間叫:EDT,Estern Daylight Time。

想查看世界全部時區的名字能夠訪問這個網站:
https://www.timeanddate.com/t...

4、夏令時

什麼是夏令時

DST(Daylight Saving Time),夏令時又稱夏季時間,或者夏時制。

它是爲節約能源而人爲規定地方時間的制度。通常在天亮早的夏季人爲將時間提早一小時,可使人早起早睡,減小照明量,以充分利用光照資源,從而節約照明用電。

全球約40%的國家在夏季使用夏令時,其餘國家則整年只使用標準時間。標準時間在有的國家也所以被相應地稱爲冬季時間。

在施行夏令時的國家,一年裏面有一天只有23小時(夏令時開始那一天),有一天有25小時(夏令時結束那一天),其餘時間天天都是24小時。

time-daylight-time.jpg

綠色部分爲2019年統計的在全球施行冬夏令時的國家和地區。

夏令時的歷史

1784年,美國駐法國大使本傑明·富蘭克林(Benjamin Franklin)提出「日光節約時間制」。1908年,英國建築師威廉·維萊特(William Willett)再次提出,但當時該提案並未被採納。

1916年,處於一戰時期的德國政府下令將時鐘推至一個小時後,經過得到額外一小時的日光來節省戰爭所需的煤炭,成爲第一個實行夏時制的國家。隨後,英法俄美四個一戰參戰國紛紛效仿。

美國在一戰結束後於1919年取消夏時制,但在1942年二戰時,美國從新啓動夏令時制,1966年正式立法肯定永久使用。1973至1975年石油危機爆發期間,美國連續兩年延長夏令時制,以節省石油。

歐洲大部分國家則是從1976年——第四次中東戰爭致使首次石油危機(1973年)的3年後纔開始施行夏令時制。

1986年4月,中國國務院辦公廳發出《在全國範圍內實行夏時制的通知》,要求全民早睡早起節約能源:每一年4月中旬的第一個星期日2時,將時鐘撥快一小時;10月中旬第一個星期日的2時,再將時鐘撥慢一小時。但此夏令時只實行了6年,在1992年中止施行,主因是中國東西地域廣闊卻只奉行一個北京時間,實時夏令時制帶來不少不切實際的反效果。

夏令時的爭議

從過去的100多年來看,夏令時每每是在國家發生嚴重危機(如戰爭和能源短缺)的狀況下才會受到青睞。而在相對和平的近10年裏,這種時間制度則變得愈來愈不受歡迎。

它會使得人們的生物鐘被擾亂,經常陷入睡眠不足的狀況,不只對人體健康有害、致使車禍,還會對旅遊、航空領域形成極大的混亂。

另外,冬、夏令時究竟可否起到節能的做用,也仍有待商榷。美國一項截至2014年3月的研究代表,這種時間轉換制度最多能在三、4月幫助美國減小1%的用電量,而美國國家標準局則認爲,夏令時對用電量沒有絲毫影響。

在俄羅斯,此前的一份報告也顯示,夏令時幫助俄羅斯每一年節約的電量,僅至關於兩三個火力發電廠的發電量,十分的「雞肋」。

去年(2019年)3月26日,做爲全世界第一個提出並實行夏令時的國家,德國,在歐洲議會上以410比192的同意票經過了取消冬、夏令時轉換制提案,擬定於2021年4月起,全部歐盟國家再也不實行冬、夏令時轉換。待各成員國造成最終法案後,將選擇永久使用夏令時時間或是冬令時時間。

5、本地時間

在平常生活中所使用的時間咱們一般稱之爲本地時間。這個時間等於咱們所在(或者所使用)時區內的當地時間,它由與世界標準時間(UTC)之間的偏移量來定義。這個偏移量能夠表示爲 UTC- 或 UTC+,後面接上偏移的小時和分鐘數。

6、JavaScript中的Date

獲得本地時間,在不一樣時區打印 new Date() ,輸出的結果將會不同:

new Date();

獲得本地時間距 1970年1月1日午夜(GMT時間)之間的毫秒數:

new Date().getTime();

返回本地時間與 GMT 時間之間的時間差,以分鐘爲單位:

new Date().getTimezoneOffset();

如何在任何地方都能正確顯示當地時間(只要知道該地的timezone):

//目標表時間,東八區
let timezone = 8;
//獲取本地時間與格林威治時間的時間差(注意是分鐘,記得轉換)
const diff = new Date().getTimezoneOffset();
//根據本地時間和時間差得到格林威治時間
const absTime = new Date().getTime() + diff * 60 * 1000;
//根據格林威治時間和各地時區,獲得各地時區的時間
let localTime = new Date(absTime + timeZone * 60 * 60 * 1000);
//處理夏令時(isDST爲本身封裝的處理方法)
if(isDST(localTime, country)) {
  localTime = new Date(absTime + (timeZone + 1) * 60 * 60 * 1000);
}
return localTime;

結語

以上分別從定義、來源等維度解釋和擴展說明了GMT、UTC、時區和夏令時的概念、歷史、意義,並在最後列舉了這些概念在JS項目中的一個很是實用的應用。

簡單地講, GMT 是之前的世界時間標準;UTC 是如今在使用的世界時間標準;時區是基於格林威治子午線來偏移的,往東爲正,往西爲負;夏令時是地方時間制度,施行夏令時的地方,每一年有2天很特殊(一天只有23個小時,另外一天有25個小時)。

從源頭上完全瞭解了這些概念,將會讓咱們在處理與時間相關的問題時如虎添翼。


文章同時發表於公衆號「前端手札」,喜歡的話能夠關注一下哦。

qianduanshouzha-gzh.png

本文做者:ChampYin
轉載請註明出處: https://champyin.com/2020/04/24/完全弄懂GMT、UTC、時區和夏令時
相關文章
相關標籤/搜索