首页 > 解决方案 > 在浏览器窗口中自动转换日期

问题描述

我目前在我正在处理的网站的前端打印日期时遇到问题。日期是通过 Node.js(mysql模块)从 MySql 数据库中检索的,它以 MySqlDATETIME格式存储在其中。正在使用的视图引擎是 Handlebars。

问题在于在浏览器窗口中自动转换的日期,而我目前无法弄清楚这是在哪里以及如何发生的。Console.logging 从节点数据库查询中检索到的“日期”字段为我提供了2018-12-27T18:00:00.000Z一种日期,但在浏览器中,该日期打印为Thu Dec 27 2018 19:00:00 GMT+0000 (Coordinated Universal Time). 我已经尝试date = date.toString()在 Node 端进行转换,但无济于事。

-

这是 node.js 端的代码:

app.get( '/blog' , ( req , res ) => {
    db.get().query( `SELECT * FROM posts` , ( error , results ) => {
        res.render( "./blog.hbs" , 
            { 
                pageTitle : "xx - My Blog" ,
                posts     : results              
        } );
    } );
} );

提前感谢任何愿意帮助我解决这个难题的人。祝你今天过得愉快。

标签: javascriptmysqlnode.jsexpresshandlebars.js

解决方案


数据库使用 ISO DateTime 格式来存储时间戳,这是非常标准和安全的。将此时间戳放在 JS 日期构造函数中不应导致任何类型的转换。

但是,当调用 Date 对象的 toString() 方法时,它通常会通过考虑本地机器的时区偏移来生成时间戳。并且时区也添加在时间戳的末尾。

因此,据我猜测,这可能不是您的服务器端的问题,而是您应该检查您在浏览器中运行的客户端应用程序的代码。

如果要在客户端输出与服务器端完全相同的时间戳,请使用 Date.toISOString() 方法。


推荐阅读