mongoose时间自动转化为格林尼治标准时间的解决方案
坑點(diǎn)描述
本地時(shí)間
Fri Sep 01 2017 00:00:00 GMT+0800 (China Standard Time)
上傳到mongoose數(shù)據(jù)庫(kù)
ISODate(“2017-08-31T16:00:00.000+0000”)
這是一個(gè)隱藏的坑點(diǎn),上傳到mongoose的時(shí)間類型數(shù)據(jù)會(huì)自動(dòng)被轉(zhuǎn)化為格林尼治時(shí)間(零時(shí)區(qū)時(shí)間)。
而我們當(dāng)前的時(shí)區(qū)為東八區(qū),換算成零時(shí)區(qū)時(shí)間需將我們的時(shí)間減去八個(gè)小時(shí)
網(wǎng)上看了下大多數(shù)的解決方案是將上傳之前本地時(shí)間減去八小時(shí),數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)時(shí)就可以直接取到正確的時(shí)間,然而這么做這么做又引入了一個(gè)新的BUG,若當(dāng)前時(shí)區(qū)不是東八區(qū),這種操作會(huì)返回一個(gè)錯(cuò)誤的時(shí)間,因?yàn)槭澜绺鞯剞D(zhuǎn)化為格林尼治標(biāo)準(zhǔn)時(shí)間的時(shí)差不同。
終極解決方案
在從數(shù)據(jù)庫(kù)讀取到時(shí)間以后,使用new Date(time)方法可以自動(dòng)轉(zhuǎn)化為當(dāng)前時(shí)區(qū)時(shí)間。
console.log($scope.currentType.updated); //2017-08-30T04:10:04.713Z console.log(new Date($scope.currentType.updated)); //Wed Aug 30 2017 12:10:04 GMT+0800 (China Standard Time)END
總結(jié)
以上是生活随笔為你收集整理的mongoose时间自动转化为格林尼治标准时间的解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 我是一名自由职业白帽黑客
- 下一篇: 公共关系礼仪实务章节测试题——公共关系的