js處理日期時區(qū)問題解決方法
????? ?在國際化的開發(fā)中,會遇到時區(qū)問題, 平時用js處理時間,基本上忽略了時區(qū),javascript默認用的是機器本地的時區(qū)來處理。如果涉及到時區(qū)轉(zhuǎn)換,有以下幾種方式進行處理。
一、日期格式后綴法
? ? ? ?通常new Date()會得到一個這種結(jié)構(gòu)的日期時間:Thu Dec 09 2021 15:19:04 GMT+0800 最后的GMT表示格林尼治時間,+0800表示東八區(qū)
如果new Date()帶有包含時區(qū)的參數(shù),會把參數(shù)時間轉(zhuǎn)換成當前時區(qū)時間,比如:
new Date('Thu Dec 09 2021 15:19:04 GMT+0900')
會輸出Thu Dec 09 2021 14:19:04 GMT+0800,意思就是東九區(qū)的15點19分實際上是東八區(qū)的14點19分,省略掉GMT直接+-數(shù)值也是可以的new Date('Thu Dec 09 2021 15:19:04 +9')
除了gmt,utc也可以表示0時區(qū),只是兩者意義不同,UTC稱為協(xié)調(diào)世界時,其它常見的還有PDT(太平洋夏季時間),PST(太平洋標準時間、西八區(qū))
此外還有一種日期格式:2021-12-09T07:36:28Z T表示后面的是時間,可以用空格代替,Z表示0時區(qū),加減時區(qū)方式和上面一樣
二、轉(zhuǎn)換為格林威治時間法
利用?Date().getTimezoneOffset()?方法,獲取當前系統(tǒng)和格林威治時間的偏離分鐘數(shù)
轉(zhuǎn)為格林威治時間,然后在做處理
復(fù)制
以上是兩種純前端javascript進行時區(qū)處理的方法。?
在線體驗轉(zhuǎn)換可以通過工具?https://www.guud.cn/tools/timestamp-convert.html 進行轉(zhuǎn)換驗證。?截圖如下:
