亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

javascript中時區(qū)知識的整理UTC GMT問題

 更新時間:2023年10月23日 17:05:22   作者:352328759  
這篇文章主要介紹了javascript中時區(qū)知識的整理UTC GMT問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

GMT, UTC 是什么?

  • GMT: 格林尼治時間
  • UTC: 協(xié)調(diào)世界時

GMT 與 UTC 不完全相同, 但都是指 0 時區(qū)時間, 一般情況可以視作同義 

作為 javascript 開發(fā)者, 是不是對 GMT 很眼熟?

其實 GMT 就是我們調(diào)用 new Date(); 時, 返回的字符串 “Wed Jan 06 2021 17:48:30 GMT+0800 (中國標(biāo)準(zhǔn)時間)” 中的 GMT

GMT+0800: 中國是東8區(qū), 所以是 格林尼治時間 + 08:00 (東正西負(fù); +0800 即是 +08:00, 的意思; 有興趣的自行上網(wǎng)學(xué)習(xí))

時差是什么?

本文中的"時差"指的是 javascript 中的時差, 而不是地理上的時差

javascript 中的時差是指 格林威治時間和本地時間之間的時間差

也就是

格林威治時間 - 本地時間 = 時差

經(jīng)過簡單換算, 可得以下結(jié)論:

  • UTC + 8 = GMT + 8 = 北京時間(中國是東8區(qū))
  • 格林威治時間 + 8 = 北京時間
  • 格林威治時間 - 北京時間 = -8
  • 格林威治時間 - 本地時間 = 時差

getTimezoneOffset()

javascript 提供一個方法用于獲取時差

getTimezoneOffset() 方法可返回格林威治時間和本地時間之間的時差,以分鐘為單位

用法:

new Date().getTimezoneOffset() // -480

javascript 時間戳

指定的日期和時間距 1970 年 1 月 1 日午夜(GMT 時間)之間的毫秒數(shù)

這里強(qiáng)調(diào)兩點(diǎn), 兩點(diǎn)缺一不可

  • 1970 年 1 月 1 日 0 時 0 分 0 秒
  • 格林威治時間

設(shè)置日期時間

new Date() 可以不傳值也可以接受好幾種值

new Date(時間戳)

  • 先根據(jù)傳入毫秒數(shù)算得 GMT, 再把 GMT 轉(zhuǎn)換到本地時區(qū)
  • 所以傳入 0 得到的不是 0 點(diǎn)而是 8 點(diǎn)(中國是東8區(qū))

new Date(時間字符串)

  • 時間字符串可以是這樣的 “1970-1-10 0:0:0”
  • 還可以在后面補(bǔ)充指定時區(qū) “1970-1-10 0:0:0 gmt+0900”
  • 不指定時區(qū), 默認(rèn)是 GMT+0800(中國是東8區(qū))
  • 最后轉(zhuǎn)換成本地時區(qū)

new Date(year, month, day, hours, minutes, seconds, milliseconds)

  • 最少傳入兩數(shù)據(jù), 傳 null 或不傳, 為當(dāng)前時間的值
  • 傳入的是本地時區(qū)
  • 獲得的是本地時區(qū)

獲取時間戳

方法很多

  • new Date().getTime()
  • new Date().valueOf()
  • +new Date()
  • Date.now()

得到的時間戳, 是把本地時間(北京時間)換算成 GMT , 再計算跟 1970 年 1 月 1 日 0 時 0 分 0 秒 的毫秒差值

Date.UTC()

Date.UTC(年,月,日,時,分,秒,毫秒)

得到的時間戳, 直接就是 GMT, 再計算跟 1970 年 1 月 1 日 0 時 0 分 0 秒 的毫秒差值

UTC() 方法可根據(jù)世界時返回 1970 年 1 月 1 日 到指定日期的毫秒數(shù)

參數(shù)不能為空, 可以為 null, 缺失值或 null 以 0 補(bǔ)充

UTC, 時差, 本地時間關(guān)系的代碼表達(dá)

var _date = new Date();

var _UTC = Date.UTC(_date.getFullYear(), _date.getMonth(), _date.getDate(), _date.getHours(), _date.getMinutes(), _date.getSeconds(), _date.getMilliseconds());
var _BJ = _date * 1;
var _timeDifference = new Date().getTimezoneOffset() * 60 * 1000

_BJ - _UTC === _timeDifference // true

//end

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論