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()這個函數就可以了,無論你處在哪個時區結果顯示都和當地時間一樣。