問題描述
項(xiàng)目中,將獲取到的當(dāng)前時(shí)間傳回后端存儲(chǔ),再從后端獲取傳回前端顯示時(shí)芒涡,發(fā)現(xiàn)少了8小時(shí)。
問題排查
F12查看Network數(shù)據(jù)卖漫,發(fā)現(xiàn)提交時(shí)時(shí)間就變了费尽。
用axios提交時(shí)需要qs.stringify()序列化,qs默認(rèn)的時(shí)間格式化為Date.prototype.toISOString羊始,返回的是格林威治時(shí)間旱幼,比北京時(shí)間晚8小時(shí),需要修改默認(rèn)日期格式化方法突委。
在axios.js文件中增加代碼如下
//一次性解決時(shí)區(qū)和日期格式問題
import moment from 'moment'
Date.prototype.toISOString = function () {
return moment(this).format("YYYY-MM-DD HH:mm:ss");
};
再次查看Network柏卤,時(shí)區(qū)及格式正常。
然而匀油,前端獲取到的時(shí)間依舊少8小時(shí)闷旧,去后端mongodb數(shù)據(jù)庫中查看,發(fā)現(xiàn)存儲(chǔ)的時(shí)間依然是UTC時(shí)間钧唐,崩潰忙灼!
無奈,那就在前端獲取到時(shí)間后重新處理一下钝侠。
table.forEach((item) => {
item.inspect_time = moment(item.inspect_time).format("YYYY-MM-DD HH:mm:ss");
});
問題解決该园。
總結(jié)
moment大法好!