av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術文章
文章詳情頁

JavaScript獲取時區實現過程解析

瀏覽:120日期:2023-10-12 09:05:13

在一個大型的項目中,不可避免會出現操作時間的業務,比如時間的格式化,比如時間的加減,我們一般會直接使用moment.js庫來做,畢竟穩定可靠,也方便,那當我們系統只是幾個簡單頁面,對時間的操作并不是很大,引入庫文件并不是很必須的情況,我們需要時區展示怎么辦?是不是可以用瀏覽器支持的原生方法來實現?

時區

啥是時區?

時區是地球上的區域使用同一個時間定義。以前,人們通過觀察太陽的外置(時角)決定時間,這就使得不同經度的地方的時間各有不同,為了統一使用同一個時間,就引入了時區的概念。時區通過設立一個標準時間部分地解決了這個問題。世界各國位于地球的不同位置,因此不同國家,特別是東西跨度大的國家日出、日落時間必定有偏差,這些偏差就是時差。

時區表示法

協調世界時(UTC)是最主要的世界時間標準,其以院子時秒長為基礎,在時刻上盡量接近于格林威治標準時間。協調世界時是世界上調調節時鐘和時間的主要標準。如果時間是以協調世界時(UTC)表示,則在時間后面加上“Z”,“Z”是協調世界時中0時區的標志。UTC時間也叫祖魯時間,因為在北約音標字母中用“Zulu”表示“Z”。

UTC偏移量的表示形式為:±[hh]:[mm]、±[hh][mm]或者±[hh]。比如北京時間比協調世界時(UTC)早八小時,那么應當表示為:UTC+8。

JavaScript獲得當前客戶端的時區

Intl對象是ECMAScript國際化API的一個命名空間,它提供了精確的字符串對比、數字格式化和日期格式化。我們需要使用這個API的DateTimeFormat對象。具體可以參考:MDN Intl.DateTimeFormat

獲得客戶端當前時區:

Intl.DateTimeFormat().resolvedOptions().timeZone

可以看到輸出:Asia/Shanghai,即我所在時區為上海。

我們知道了在哪個時區,但是我們需要同時表示UTC+n的形式,那我們怎么知道當前時區的UTC偏移量呢?

我們可以通過Date對象實例的getTimezoneOffset方法獲取(注意返回的結果的單位為分):

new Date().getTimezoneOffset()

可以看到輸出的是-480,這樣獲得到的是0時區的時間差(0時區減去當前所在時區,單位是分鐘)。

中國標準時間是以東八區為準,比0時區的時間要早8小時。所以是-480,除以60就是所在時區:然后-480 / 60 = -8,即現在這個時區的偏移量為0 - (-8) = 8,即表示為:UTC+8 ,代碼為:

’UTC+’ + (0 - new Date().getTimezoneOffset() / 60); // 輸出:UTC+8

需要注意的是,不管你以何參數實例化一個Date對象,js在本地存儲時,都會轉化為本地時區,js不會幫你存儲實例化該日期時的時區信息。

相比較來說,moment.js是一個很好的時間處理的庫,如果有時間操作的業務還是直接使用moment.js庫方便一點,當然,只是顯示一下時區之類的,可以直接用上面簡單處理即可。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 欧美日韩在线一区 | 精品视频在线观看 | 九九成人 | 日韩毛片在线观看 | 9999精品视频 | 国产精品国产三级国产 | 亚洲欧美久久 | 中文字幕av在线播放 | 日韩精品久久久 | 国产福利小视频 | 久久a级片| 成人激情综合网 | 日韩免费在线 | 日韩中文字幕在线观看 | 青青草国产成人av片免费 | 日本色图视频 | 国内精品一区二区三区 | 91精品国产麻豆国产自产在线 | 欧美三级欧美一级 | 日韩精品在线免费观看 | 午夜私人影院 | 欧美精品久 | 永久免费看mv网站入口亚洲 | 青青草国产精品 | 欧美a级黄色片 | 久久综合五月天 | 青青视频网 | 午夜精品久久久久久 | 亚洲精品在线看 | 黄色大毛片 | 午夜精品久久久久久久99黑人 | 伦一理一级一a一片 | 亚洲在线免费 | 欧美激情成人 | 欧美黑人一区二区三区 | 成年人午夜视频 | 日韩在线不卡视频 | 日本中文字幕在线播放 | 日韩aaaa | 九色在线视频 | 亚洲精品一区二区三区精华液 |