首页 > 解决方案 > 节点 js 服务器,mysql db,返回不正确的日期值

问题描述

我正在为 mysql 数据库中的表构建一个简单的 nodejs 休息服务,为此我使 server.js 具有以下几行:

app.get('/Attivita',(req,res)=>{
  res.status(200);
   con.query('Select * from attivita', function (err, result) {
    if (err) 
    throw err;

  res.setHeader('Access-Control-Allow-Origin', 'http://isaplomb.org')
  res.send(result)
  })

});

它会返回一个带有查询结果的 json,它是正确的,它可以工作,但是在表 Attività 中有一个名为 data 的列,它以日期格式存储日期。节点 js 返回一个日期时间值并更改日期的值:

存储在 db 中的数据:2018-02-24 从 nodejs 服务返回的数据:2018-02-23T23:00:00.000Z

我需要在 html 页面中显示此日期。

谁能帮我?

标签: mysqlnode.jsrestdatedatetime

解决方案


查看您的问题,似乎 TimeZone(TZ) 导致日期更改。您的服务器和应用程序位于不同的时区。您可以将日期存储为 UTC 并根据客户端 TZ 在客户端进行转换,或者如果您想要一个特定的 TZ,则将 UTC 值转换为该 TZ。

服务器没有在数据行中存储 TZ 值,我们收到行时唯一的信息是“2018-02-24”

此外,客户端不知道哪个 TZ 服务器正在运行。将 TZ 传递给客户端,我认为这就是 node-mysql 正在做的事情。


推荐阅读