JS徹底弄懂GMT和UTC時(shí)區(qū)
前言
格林威治時(shí)間、世界時(shí)、祖魯時(shí)間、GMT、UTC、跨時(shí)區(qū)、夏令時(shí),這些眼花繚亂的時(shí)間術(shù)語,我們可能都不陌生,但是真正遇到問題,可能又不那么確定,不得不再去查一查,處理完可能過段時(shí)間又忘記。今天,我們徹底來梳理一下它們。
一、GMT
什么是GMT
GMT(Greenwich Mean Time), 格林威治平時(shí)(也稱格林威治時(shí)間)。
它規(guī)定太陽每天經(jīng)過位于英國倫敦郊區(qū)的皇家格林威治天文臺(tái)的時(shí)間為中午12點(diǎn)。
GMT的歷史
格林威治皇家天文臺(tái)為了海上霸權(quán)的擴(kuò)張計(jì)劃,在十七世紀(jì)就開始進(jìn)行天體觀測(cè)。為了天文觀測(cè),選擇了穿過英國倫敦格林威治天文臺(tái)子午儀中心的一條經(jīng)線作為零度參考線,這條線,簡稱格林威治子午線。
1884年10月在美國華盛頓召開了一個(gè)國際子午線會(huì)議,該會(huì)議將格林威治子午線設(shè)定為本初子午線,并將格林威治平時(shí) (GMT, Greenwich Mean Time) 作為世界時(shí)間標(biāo)準(zhǔn)(UT, Universal Time)。由此也確定了全球24小時(shí)自然時(shí)區(qū)的劃分,所有時(shí)區(qū)都以和 GMT 之間的偏移量做為參考。
1972年之前,格林威治時(shí)間(GMT)一直是世界時(shí)間的標(biāo)準(zhǔn)。1972年之后,GMT 不再是一個(gè)時(shí)間標(biāo)準(zhǔn)了。
二、UTC
什么是UTC
UTC(Coodinated Universal Time),協(xié)調(diào)世界時(shí),又稱世界統(tǒng)一時(shí)間、世界標(biāo)準(zhǔn)時(shí)間、國際協(xié)調(diào)時(shí)間。由于英文(CUT)和法文(TUC)的縮寫不同,作為妥協(xié),簡稱UTC。
UTC 是現(xiàn)在全球通用的時(shí)間標(biāo)準(zhǔn),全球各地都同意將各自的時(shí)間進(jìn)行同步協(xié)調(diào)。UTC 時(shí)間是經(jīng)過平均太陽時(shí)(以格林威治時(shí)間GMT為準(zhǔn))、地軸運(yùn)動(dòng)修正后的新時(shí)標(biāo)以及以秒為單位的國際原子時(shí)所綜合精算而成。
在軍事中,協(xié)調(diào)世界時(shí)會(huì)使用“Z”來表示。又由于Z在無線電聯(lián)絡(luò)中使用“Zulu”作代稱,協(xié)調(diào)世界時(shí)也會(huì)被稱為"Zulu time"。
UTC 由兩部分構(gòu)成:
原子時(shí)間(TAI, International Atomic Time):
結(jié)合了全球400個(gè)所有的原子鐘而得到的時(shí)間,它決定了我們每個(gè)人的鐘表中,時(shí)間流動(dòng)的速度。
世界時(shí)間(UT, Universal Time):
也稱天文時(shí)間,或太陽時(shí),他的依據(jù)是地球的自轉(zhuǎn),我們用它來確定多少原子時(shí),對(duì)應(yīng)于一個(gè)地球日的時(shí)間長度。
UTC的歷史
1960年,國際無線電咨詢委員會(huì)規(guī)范統(tǒng)一了 UTC 的概念,并在次年投入實(shí)際使用。
“Coordinated Universal Time”這個(gè)名字則在1967年才被正式采納。
1967年以前, UTC被數(shù)次調(diào)整過,原因是要使用閏秒(leap second)來將 UTC 與地球自轉(zhuǎn)時(shí)間進(jìn)行統(tǒng)一。
三、GMT vs UTC
GMT是前世界標(biāo)準(zhǔn)時(shí),UTC是現(xiàn)世界標(biāo)準(zhǔn)時(shí)。
UTC 比 GMT更精準(zhǔn),以原子時(shí)計(jì)時(shí),適應(yīng)現(xiàn)代社會(huì)的精確計(jì)時(shí)。
但在不需要精確到秒的情況下,二者可以視為等同。
每年格林尼治天文臺(tái)會(huì)發(fā)調(diào)時(shí)信息,基于UTC。
四、時(shí)區(qū)
隨著火車鐵路與其他交通和通訊工具的發(fā)展,以及全球化貿(mào)易的推動(dòng),各地使用各自的當(dāng)?shù)靥枙r(shí)間帶來了時(shí)間不統(tǒng)一的問題,在19世紀(jì)催生了統(tǒng)一時(shí)間標(biāo)準(zhǔn)的需求,時(shí)區(qū)由此誕生。
時(shí)區(qū)是如何定義的
從格林威治本初子午線起,經(jīng)度每向東或者向西間隔15°,就劃分一個(gè)時(shí)區(qū),在這個(gè)區(qū)域內(nèi),大家使用同樣的標(biāo)準(zhǔn)時(shí)間。
但實(shí)際上,為了照顧到行政上的方便,常將1個(gè)國家或1個(gè)省份劃在一起。所以時(shí)區(qū)并不嚴(yán)格按南北直線來劃分,而是按自然條件來劃分。另外:由于目前,國際上并沒有一個(gè)批準(zhǔn)各國更改時(shí)區(qū)的機(jī)構(gòu)。一些國家會(huì)由于特定原因改變自己的時(shí)區(qū)。
全球共分為24個(gè)標(biāo)準(zhǔn)時(shí)區(qū),相鄰時(shí)區(qū)的時(shí)間相差一個(gè)小時(shí)。
在不同地區(qū),同一個(gè)時(shí)區(qū)往往會(huì)有很多個(gè)不同的時(shí)區(qū)名稱,因?yàn)槊Q中通常會(huì)包含該國該地區(qū)的地理信息。在夏令時(shí)期間,當(dāng)?shù)氐臅r(shí)區(qū)名稱及字母縮寫會(huì)有所變化(通常會(huì)包含“daylight”或“summer”字樣)。
例如美國東部標(biāo)準(zhǔn)時(shí)間叫:EST,Estern Standard Time;而東部夏令時(shí)間叫:EDT,Estern Daylight Time。
想查看世界所有時(shí)區(qū)的名字可以訪問這個(gè)網(wǎng)站:https://www.timeanddate.com/t...
五、夏令時(shí)
什么是夏令時(shí)
DST(Daylight Saving Time),夏令時(shí)又稱夏季時(shí)間,或者夏時(shí)制。
它是為節(jié)約能源而人為規(guī)定地方時(shí)間的制度。一般在天亮早的夏季人為將時(shí)間提前一小時(shí),可以使人早起早睡,減少照明量,以充分利用光照資源,從而節(jié)約照明用電。
全球約40%的國家在夏季使用夏令時(shí),其他國家則全年只使用標(biāo)準(zhǔn)時(shí)間。標(biāo)準(zhǔn)時(shí)間在有的國家也因此被相應(yīng)地稱為冬季時(shí)間。
在施行夏令時(shí)的國家,一年里面有一天只有23小時(shí)(夏令時(shí)開始那一天),有一天有25小時(shí)(夏令時(shí)結(jié)束那一天),其他時(shí)間每天都是24小時(shí)。
綠色部分為2019年統(tǒng)計(jì)的在全球施行冬夏令時(shí)的國家和地區(qū)。
夏令時(shí)的歷史
1784年,美國駐法國大使本杰明·富蘭克林(Benjamin Franklin)提出“日光節(jié)約時(shí)間制”。1908年,英國建筑師威廉·維萊特(William Willett)再次提出,但當(dāng)時(shí)該提案并未被采納。
1916年,處于一戰(zhàn)時(shí)期的德國政府下令將時(shí)鐘推至一個(gè)小時(shí)后,通過獲得額外一小時(shí)的日光來節(jié)省戰(zhàn)爭所需的煤炭,成為第一個(gè)實(shí)行夏時(shí)制的國家。隨后,英法俄美四個(gè)一戰(zhàn)參戰(zhàn)國紛紛效仿。
美國在一戰(zhàn)結(jié)束后于1919年取消夏時(shí)制,但在1942年二戰(zhàn)時(shí),美國重新啟動(dòng)夏令時(shí)制,1966年正式立法確定永久使用。1973至1975年石油危機(jī)爆發(fā)期間,美國連續(xù)兩年延長夏令時(shí)制,以節(jié)省石油。
歐洲大部分國家則是從1976年——第四次中東戰(zhàn)爭導(dǎo)致首次石油危機(jī)(1973年)的3年后才開始施行夏令時(shí)制。
1986年4月,中國國務(wù)院辦公廳發(fā)出《在全國范圍內(nèi)實(shí)行夏時(shí)制的通知》,要求全民早睡早起節(jié)約能源:每年4月中旬的第一個(gè)星期日2時(shí),將時(shí)鐘撥快一小時(shí);10月中旬第一個(gè)星期日的2時(shí),再將時(shí)鐘撥慢一小時(shí)。但此夏令時(shí)只實(shí)行了6年,在1992年停止施行,主因是中國東西地域廣闊卻只奉行一個(gè)北京時(shí)間,實(shí)時(shí)夏令時(shí)制帶來很多不切實(shí)際的反效果。
夏令時(shí)的爭議
從過去的100多年來看,夏令時(shí)往往是在國家發(fā)生嚴(yán)重危機(jī)(如戰(zhàn)爭和能源短缺)的情況下才會(huì)受到青睞。而在相對(duì)和平的近10年里,這種時(shí)間制度則變得越來越不受歡迎。
它會(huì)使得人們的生物鐘被擾亂,常常陷入睡眠不足的情況,不僅對(duì)人體健康有害、導(dǎo)致車禍,還會(huì)對(duì)旅游、航空領(lǐng)域造成極大的混亂。
另外,冬、夏令時(shí)究竟能否起到節(jié)能的作用,也仍有待商榷。美國一項(xiàng)截至2014年3月的研究表明,這種時(shí)間轉(zhuǎn)換制度最多能在3、4月幫助美國減少1%的用電量,而美國國家標(biāo)準(zhǔn)局則認(rèn)為,夏令時(shí)對(duì)用電量沒有絲毫影響。
在俄羅斯,此前的一份報(bào)告也顯示,夏令時(shí)幫助俄羅斯每年節(jié)約的電量,僅相當(dāng)于兩三個(gè)火力發(fā)電廠的發(fā)電量,十分的“雞肋”。
去年(2019年)3月26日,作為全世界第一個(gè)提出并實(shí)行夏令時(shí)的國家,德國,在歐洲議會(huì)上以410比192的贊成票通過了取消冬、夏令時(shí)轉(zhuǎn)換制提案,擬定于2021年4月起,所有歐盟國家不再實(shí)行冬、夏令時(shí)轉(zhuǎn)換。待各成員國形成最終法案后,將選擇永久使用夏令時(shí)時(shí)間或是冬令時(shí)時(shí)間。
六、本地時(shí)間
在日常生活中所使用的時(shí)間我們通常稱之為本地時(shí)間。這個(gè)時(shí)間等于我們所在(或者所使用)時(shí)區(qū)內(nèi)的當(dāng)?shù)貢r(shí)間,它由與世界標(biāo)準(zhǔn)時(shí)間(UTC)之間的偏移量來定義。這個(gè)偏移量可以表示為 UTC- 或 UTC+,后面接上偏移的小時(shí)和分鐘數(shù)。
七、JavaScript中的Date
得到本地時(shí)間,在不同時(shí)區(qū)打印 new Date() ,輸出的結(jié)果將會(huì)不一樣:
new Date();
得到本地時(shí)間距 1970年1月1日午夜(GMT時(shí)間)之間的毫秒數(shù):
new Date().getTime();
返回本地時(shí)間與 GMT 時(shí)間之間的時(shí)間差,以分鐘為單位:
new Date().getTimezoneOffset();
如何在任何地方都能正確顯示當(dāng)?shù)貢r(shí)間(只要知道該地的timezone):
//目標(biāo)表時(shí)間,東八區(qū) let timezone = 8; //獲取本地時(shí)間與格林威治時(shí)間的時(shí)間差(注意是分鐘,記得轉(zhuǎn)換) const diff = new Date().getTimezoneOffset(); //根據(jù)本地時(shí)間和時(shí)間差獲得格林威治時(shí)間 const absTime = new Date().getTime() + diff * 60 * 1000; //根據(jù)格林威治時(shí)間和各地時(shí)區(qū),得到各地時(shí)區(qū)的時(shí)間 let localTime = new Date(absTime + timeZone * 60 * 60 * 1000); //處理夏令時(shí)(isDST為自己封裝的處理方法) if(isDST(localTime, country)) { localTime = new Date(absTime + (timeZone + 1) * 60 * 60 * 1000); } return localTime;
以上就是JS徹底弄懂GMT和UTC時(shí)區(qū)的詳細(xì)內(nèi)容,更多關(guān)于JS的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
javascript實(shí)現(xiàn)3D變換的立體圓圈實(shí)例
這篇文章主要介紹了javascript實(shí)現(xiàn)3D變換的立體圓圈效果,涉及javascript動(dòng)態(tài)操作頁面元素實(shí)現(xiàn)滾動(dòng)與變色的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08Javascript中將變量轉(zhuǎn)換為字符串的三種方法
這篇文章主要給大家介紹了關(guān)于Javascript中將變量轉(zhuǎn)換為字符串的三種方法,這三種方法分別是:value.toString()、"" + value和String(value),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09JavaScript中的一些隱式轉(zhuǎn)換和總結(jié)(推薦)
這篇文章主要介紹了JavaScript中的一些隱式轉(zhuǎn)換和總結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-12-12原生JavaScript實(shí)現(xiàn)的簡單放大鏡效果示例
這篇文章主要介紹了原生JavaScript實(shí)現(xiàn)的簡單放大鏡效果,涉及javascript事件響應(yīng)及頁面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-02-02layui動(dòng)態(tài)加載多表頭的實(shí)例
今天小編就為大家分享一篇layui動(dòng)態(tài)加載多表頭的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09使用Web Uploader實(shí)現(xiàn)多文件上傳
這篇文章主要介紹了使用Web Uploader實(shí)現(xiàn)多文件上傳的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06前端Echarts自適應(yīng)分辨率和縮放功能代碼實(shí)例
ECharts提供了自適應(yīng)功能,可以自動(dòng)調(diào)整圖表大小以適應(yīng)屏幕變化,下面這篇文章主要給大家介紹了關(guān)于前端Echarts自適應(yīng)分辨率和縮放功能的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07layui輸入框中只允許輸入整數(shù)的實(shí)現(xiàn)方法
今天小編就為大家分享一篇layui輸入框中只允許輸入整數(shù)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09