所以我得到了一个网络应用程序,用户可以在其中购买该应用程序的“一日访问权”。这个想法是,当用户购买时,我使用 endDate
属性更新用户。登录后,我将检查 endDate 中的值是否已通过。我的模型:
const UserSchema = new Schema({
username: {
type: String,
required: true
},
password: {
type: String,
required: true
},
endDate: {
type: Date,
},
});
现在,奇怪的是,在我的前端(以及 JSFdlle 和 Playcode.io 等在线沙箱)上,以下代码以以下格式给出明天的日期:
格式:
2020 年 2 月 6 日星期四 11:23:06 GMT+0100(中欧标准时间)
代码:
let day = new Date();
let nextDay = new Date(day);
nextDay.setDate(day.getDate() + 1);
console.log(nextDay);
在我的后端使用完全相同的代码,日期结果的格式完全不同:
格式:
“2020-02-06T10:12:25.559Z”
代码:
router.get('/test', (req, res) => {
let day = new Date();
let nextDay = new Date(day);
nextDay.setDate(day.getDate() + 1);
res.send(nextDay)
})
为什么会发生这种情况?我该怎么做才能使格式看起来相同?我错过了什么吗?
最佳答案
差异原因: 当数据从后端发送时,它以字符串化的 JSON 形式发送。这就是为什么您得到 ISO 字符串而不是日期对象的原因。
解决方案 您可以获取 ISO 字符串,并在前端代码中再次使用 New Date(string) 解析它,以按照您想要的方式查看。
另一种方法是使用名为 serialize-javascript 的 npm 模块将其作为对象而不是字符串化 JSON 发送。
关于javascript - 前端的 new Date() 格式与后端的 new Date() 格式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60075057/