Javascript 前端的new Date()格式与后端的new Date()格式不同
因此,我得到了一个网络应用程序,用户可以在其中购买对该应用程序的“一天访问”。这个想法是,当用户购买时,我用Javascript 前端的new Date()格式与后端的new Date()格式不同,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,因此,我得到了一个网络应用程序,用户可以在其中购买对该应用程序的“一天访问”。这个想法是,当用户购买时,我用endDate属性更新用户。登录后,我将检查endDate中的值是否已通过。我的模型: const UserSchema = new Schema({ username: { type: String, required: true }, password: { type: String, requir
endDate
属性更新用户。登录后,我将检查endDate中的值是否已通过。我的模型:
const UserSchema = new Schema({
username: {
type: String,
required: true
},
password: {
type: String,
required: true
},
endDate: {
type: Date,
},
});
现在,奇怪的是,在我的前端(以及像jsfidle&Playcode.io之类的在线沙盒),以下代码以以下格式为我提供了明天的日期:
格式:
2020年2月6日星期四11:23:06 GMT+0100(中欧标准时间)
代码:
在我的后端使用完全相同的代码,日期结果的格式完全不同:
格式:
“2020-02-06T10:12:25.559Z”
代码:
为什么会发生这种情况?我可以做些什么使格式看起来相同?我遗漏了什么吗?差异的原因: 从后端发送数据时,数据将作为字符串化JSON发送。这就是为什么使用ISO字符串而不是日期对象的原因 解决方案 您可以获取ISO字符串,并在前端代码中再次使用新日期(字符串)对其进行解析,以便按照您希望的方式查看
另一种方法是使用名为的npm模块将其作为对象发送,而不是字符串化的JSON。您可以将其留给
console.log
来决定如何将日期转换为字符串表示形式。一个是使用toString
,另一个是以ISO格式(UTC)显示。而是使用其中一个日期方法将其显式转换为字符串表示形式。然后,还要考虑服务器和客户端之间的区域设置差异(如时区或日期格式)。这就是为什么不应该依赖toString
来确定日期的原因。它取决于运行它的设备上设置的区域设置。您应该尝试使用toISOString()
或togmstring()
@Seblor登录。谢谢大家。不知道有不同的方法将日期转换为字符串表示形式。
let day = new Date();
let nextDay = new Date(day);
nextDay.setDate(day.getDate() + 1);
console.log(nextDay);
router.get('/test', (req, res) => {
let day = new Date();
let nextDay = new Date(day);
nextDay.setDate(day.getDate() + 1);
res.send(nextDay)
})