解決MongoDB儲存時間時差的問題

levinhax發表於2019-02-16

MongoDB儲存時間型別資料時,都是先轉換為UTC時間,然後儲存到資料庫中,當我們取出儲存的時間時,就會出現時差的問題。比如我們用的北京時間,讀取到的數值就會看到比當前時間少了8個小時,難道說我們在每次讀取的時候都要單獨處理一下時間嗎,這就比較麻煩。其實,我們可以在儲存的時候進行相應的處理,只需使用getTimezoneOffset()和toISOString()函式。

getTimezoneOffset函式:返回此地區的時差(當地時間與GMT格林威治標準時間的地區時差),單位為分鐘。

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

toISOString()函式:使用ISO標準將 Date 物件轉換為字串。

該標準稱為 ISO-8601 ,格式為: YYYY-MM-DDTHH:mm:ss.sssZ。

封裝時間轉換函式

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

我們在儲存時間的時候呼叫localDate()這個函式就可以了,無論你處在哪個時區結果顯示都和當地時間一樣。

相關文章