【发布时间】:2015-05-18 15:33:12
【问题描述】:
我有sails.js 应用程序。
当我将记录添加到我的 MySQL 数据库时,有一个字段 createdAt - 类型 dateTime。
在 MySql 控制台中 createdAt 值看起来像 Wed Mar 25 2015 00:00:00 GMT+0100
当我尝试使用sails.js 控制器将这些数据作为JSON 获取时,我得到了
2015-03-24T23:00:00.000Z - 1 小时后?
我的系统时区是 GMT +1。
如何在 db 和 JSON 响应中获得相同的时间?
'list': function (req, res, next) {
Tests.find().exec(function (err, tests) {
if (err) res.json({ error: 'DB error' }, 500);
if (tests) {
_.each(tests, function (data) {
console.log("Date: " + JSON.stringify(data.createdAt)+" "+data.createdAt);
})
res.status(200).json(tests);
}
});
控制台输出为:
Date: "2015-03-10T14:28:51.000Z" Tue Mar 10 2015 15:28:51 GMT+0100
Date: "2015-03-16T10:25:34.000Z" Mon Mar 16 2015 11:25:34 GMT+0100
Date: "2015-03-16T11:27:23.000Z" Mon Mar 16 2015 12:27:23 GMT+0100
Date: "2015-03-16T11:33:39.000Z" Mon Mar 16 2015 12:33:39 GMT+0100
Date: "2015-03-16T11:34:41.000Z" Mon Mar 16 2015 12:34:41 GMT+0100
Date: "2015-03-16T12:13:21.000Z" Mon Mar 16 2015 13:13:21 GMT+0100
Date: "2015-03-16T13:54:03.000Z" Mon Mar 16 2015 14:54:03 GMT+0100
这一切都是在转换为 JSON 时发生的 - 仍然不知道如何修复它。
【问题讨论】:
-
听起来像是两次应用时区偏移。您可能想通过暂时进入不同的时区来检查,例如为美国。接下来,发布代码 - 我们不知道问题是您从数据库中获取数据时出现的问题,还是作为响应的一部分被序列化时出现的问题。
-
数据看起来不错,我认为问题出在不同格式的打印中
-
[stackoverflow 问题 1486476][1] [1] 的可能重复项:stackoverflow.com/questions/1486476/…
-
它是相似的,但解决方案在这里很合适。我的服务器和客户端在同一个时区,当我从查询发送结果集作为 json 响应时,我不想遍历结果集来转换所有日期文件。