如果我在 Node 中控制臺記錄日期,我會得到正確的日期:
console.log(`Date according to Node: ${new Date()}`);
根據節點的日期:Mon Apr 04 2022 17:52:20 GMT 0200
但是,當我通過 POST 請求從 React 發送日期并從控制臺記錄該日期時,req.body我得到:
2022-04-03T22:00:00.000Z
即使從日期選擇器記錄日期以回應控制臺,我得到正確的日期!我進入控制臺(React)的日期是:
2022 年 4 月 4 日星期一 00:00:00 GMT 0200
那么,在這兩者之間會發生什么導致req.body.myDate我的日期不正確?我可以看到我的 React 日期沒有時間,但不確定在這種情況下是否會有所不同。
反應:
const onSubmit = async (data, e) => {
var d = new Date(data.visitDate);
d = new Date(
`${d.getFullYear()}-${String(101 d.getMonth()).substr(1)}-${String(
100 d.getDate()
).substr(1)}`
);
try {
const response = await axios.post(
"http://localhost:8000/api/v1/endpoint",
{
email: email,
apptDate: d,
}
);
if (response.status === 201) {
setSuccess(true);
}
} catch (err) {
setSuccess(false);
}
};
uj5u.com熱心網友回復:
似乎 React.toISOString()在構造 POST 請求時使用了序列化日期,并且總是以 UTC 格式給出日期(帶有Z后綴)。請注意,2022-04-03T22:00:00.000Z與 的時間點相同2022-04-04T00:00:00.000 02:00。
如果您想要 UTC 午夜的時間點,您必須確保創建 Javascript Date,例如,作為new Date("2022-04-04"). 相比之下,new Date()在瀏覽器的時區中創建一個日期:
new Date("2022-04-04").toISOString() === '2022-04-04T00:00:00.000Z'
new Date().toISOString() === '2022-04-03T22:00:00.000Z'
如果您在時區的午夜執行這兩個陳述句。
要在 React 中獲取當前日期,可以使用:
var d=new Date();
new Date(`${d.getFullYear()
}-${String(101 d.getMonth()).substr(1)
}-${String(100 d.getDate()).substr(1)
}`).toISOString()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/456749.html
