javascript - 前端的 new Date() 格式与后端的 new Date() 格式不同

标签 javascript node.js express mongoose

所以我得到了一个网络应用程序,用户可以在其中购买该应用程序的“一日访问权”。这个想法是,当用户购买时,我使用 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/

相关文章:

express - 如何在 NestJS Interceptor 中获取处理程序路由(对于 Express 和 Fastify)

node.js - 如何在 Node.js 中调试错误 ECONNRESET?

node.js - 装饰器中不支持'Injectable'函数调用的模板编译过程中的错误,但已调用'ɵmakeDecorator'

javascript - Node.js Stream Transform 是否维护 block 的顺序?

javascript - 将输入文本字段显示为纯文本

javascript - 获取 JavaScript 数组中的所有唯一值(删除重复值)

javascript - 在 JavaScript 中扁平化 JSON 对象

javascript - 如何在 next.js 中使用带有 typescript 的 express res.locals

javascript - 在 HTML 中注入(inject) Javascript 片段

javascript - 克隆元素时单击“For Each”