欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript中時(shí)區(qū)知識(shí)的整理UTC GMT問(wèn)題

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

GMT, UTC 是什么?

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

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

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

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

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

時(shí)差是什么?

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

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

也就是

格林威治時(shí)間 - 本地時(shí)間 = 時(shí)差

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

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

getTimezoneOffset()

javascript 提供一個(gè)方法用于獲取時(shí)差

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

用法:

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

javascript 時(shí)間戳

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

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

  • 1970 年 1 月 1 日 0 時(shí) 0 分 0 秒
  • 格林威治時(shí)間

設(shè)置日期時(shí)間

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

new Date(時(shí)間戳)

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

new Date(時(shí)間字符串)

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

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

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

獲取時(shí)間戳

方法很多

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

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

Date.UTC()

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

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

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

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

UTC, 時(shí)差, 本地時(shí)間關(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é)

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

相關(guān)文章

最新評(píng)論