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

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()這個函數就能夠了,不管你處在哪一個時區結果顯示都和當地時間同樣。code

相關文章
相關標籤/搜索