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