主頁(yè) > 知識(shí)庫(kù) > MongoDB存儲(chǔ)時(shí)間時(shí)差問(wèn)題的解決方法

MongoDB存儲(chǔ)時(shí)間時(shí)差問(wèn)題的解決方法

熱門標(biāo)簽:蘋果汽車租賃店地圖標(biāo)注 濟(jì)南電銷機(jī)器人加盟公司 電銷機(jī)器人是什么軟件 老虎洗衣店地圖標(biāo)注 云南外呼系統(tǒng) 怎么投訴地圖標(biāo)注 廣州長(zhǎng)安公司怎樣申請(qǐng)400電話 呼和浩特電銷外呼系統(tǒng)加盟 杭州人工電銷機(jī)器人價(jià)格

前言

MongoDB存儲(chǔ)時(shí)間類型數(shù)據(jù)時(shí),都是先轉(zhuǎn)換為UTC時(shí)間,然后存儲(chǔ)到數(shù)據(jù)庫(kù)中,當(dāng)我們?nèi)〕龃鎯?chǔ)的時(shí)間時(shí),就會(huì)出現(xiàn)時(shí)差的問(wèn)題。

比如我們用的北京時(shí)間,讀取到的數(shù)值就會(huì)看到比當(dāng)前時(shí)間少了8個(gè)小時(shí),難道說(shuō)我們?cè)诿看巫x取的時(shí)候都要單獨(dú)處理一下時(shí)間嗎,這就比較麻煩。其實(shí),我們可以在存儲(chǔ)的時(shí)候進(jìn)行相應(yīng)的處理,只需使用getTimezoneOffset()toISOString()函數(shù)。

需要了解的概念:

格林威治時(shí)間

格林威治子午線上的地方時(shí),或零時(shí)區(qū)(中時(shí)區(qū))的區(qū)時(shí)叫做格林威治時(shí)間,也叫世界時(shí)。(更多詳細(xì)的概念不說(shuō)了,這里我們不需要。) 比如我們中國(guó)是東八區(qū),北京時(shí)間是(GMT+08:00)

獲得本地與格林威治時(shí)間的時(shí)差:new Date().getTimezoneOffset(),單位為分鐘。

已知格林威治時(shí)間,換算本地正確時(shí)間

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

已知本地時(shí)間,換算對(duì)應(yīng)格林威治時(shí)間:

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

已知本地時(shí)間,換算其他時(shí)區(qū)的時(shí)間

因?yàn)闀r(shí)區(qū)間的差異是以小時(shí)為單位的。所以算出0時(shí)區(qū)的時(shí)間后,再減去或加上相應(yīng)的小時(shí)即可(東N區(qū)便+N小時(shí),西N區(qū)便-N小時(shí))。 為了方便計(jì)算,東N區(qū)記做正數(shù),西N區(qū)記做負(fù)數(shù),即:

目標(biāo)時(shí)區(qū)時(shí)間 = 本地時(shí)間 + 時(shí)差 + 時(shí)區(qū)間隔

getTimezoneOffset函數(shù):返回此地區(qū)的時(shí)差(當(dāng)?shù)貢r(shí)間與GMT格林威治標(biāo)準(zhǔn)時(shí)間的地區(qū)時(shí)差),單位為分鐘。

script>
 // 我們是東八區(qū)
 var d = new Date();
 var tz = d.getTimezoneOffset();
 console.log(tz); // -480
/script>

toISOString()函數(shù):使用ISO標(biāo)準(zhǔn)將 Date 對(duì)象轉(zhuǎn)換為字符串。

該標(biāo)準(zhǔn)稱為 ISO-8601 ,格式為: YYYY-MM-DDTHH:mm:ss.sssZ。

語(yǔ)法

Date.toISOString()

返回值

類型 描述
String ISO 標(biāo)準(zhǔn)格式的時(shí)間與日期

封裝時(shí)間轉(zhuǎn)換函數(shù)

localDate(v) {
 const d = new Date(v || Date.now());
 d.setMinutes(d.getMinutes() - d.getTimezoneOffset());
 return d.toISOString();
},

我們?cè)诖鎯?chǔ)時(shí)間的時(shí)候調(diào)用localDate()這個(gè)函數(shù)就可以了,無(wú)論你處在哪個(gè)時(shí)區(qū)結(jié)果顯示都和當(dāng)?shù)貢r(shí)間一樣。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • 深入了解MongoDB是如何存儲(chǔ)數(shù)據(jù)的
  • MongoDB系列教程(八):GridFS存儲(chǔ)詳解
  • PHP操作MongoDB GridFS 存儲(chǔ)文件的詳解
  • PHP MongoDB GridFS 存儲(chǔ)文件的方法詳解
  • Spring Boot集成Shiro并利用MongoDB做Session存儲(chǔ)的方法詳解
  • Nodejs使用Mongodb存儲(chǔ)與提供后端CRD服務(wù)詳解
  • python將MongoDB里的ObjectId轉(zhuǎn)換為時(shí)間戳的方法
  • python根據(jù)時(shí)間生成mongodb的ObjectId的方法
  • 深究從MongoDB的ObjectId中獲取時(shí)間信息
  • MongoDB批量將時(shí)間戳轉(zhuǎn)為通用日期格式示例代碼

標(biāo)簽:遼陽(yáng) 玉林 泰安 興安盟 自貢 廈門 無(wú)錫 雞西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MongoDB存儲(chǔ)時(shí)間時(shí)差問(wèn)題的解決方法》,本文關(guān)鍵詞  MongoDB,存儲(chǔ),時(shí)間,時(shí)差,問(wèn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MongoDB存儲(chǔ)時(shí)間時(shí)差問(wèn)題的解決方法》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MongoDB存儲(chǔ)時(shí)間時(shí)差問(wèn)題的解決方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章