我有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 rsponse中获得相同的时间?
'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时发生的一切 - 仍然不知道如何解决它。
答案 0 :(得分:1)
JSON.stringify(data.createdAt)
等于data.createdAt.toJSON()
,等于data.createdAt.toISOString()
data.createdAt
等于data.createdAt.toString()
时间价值相等; toString()
会根据您的时区返回,而toISOString()
则为GMT。
要从JSON字符串使用转换函数获取日期作为JSON.parse()
的第二个参数,您可以使用正则表达式rx = /([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})\.([0-9]{3})Z/
检查日期ISO格式,然后将其转换为日期d = new Date(str)
答案 1 :(得分:0)
Mysql数据库中createdAt的类型是什么?是日期吗?如果是,请尝试将其设置为varchar。如果您需要操作它或格式化它,您可以使用时刻js。