我在node.js中使用Sequelize来保存打开和关闭时间 . 我也使用moment.js来格式化 . 改变FindOrCreate我这样做:
result.open = moment(hours.open, "hh:mma").format("YYYY-MM-DD HH:mm:ss");
result.save()
...
这工作正常,时间格式化为MySQL的日期时间格式 . 问题是当我检索时间时Seqquelize认为它是UTC时间并将其转换为EST(我的服务器时区) .
我希望它以UTC的形式进入数据库并以相同的方式出现 . 有什么我做错了吗?为什么Sequelize在插入时不将其转换为UTC,但假设它的UTC出来了?另外,有没有办法让它尝试转换为我的服务器时区?
3 回答
我知道这已经很晚了,但是对于那些与 postgres 挣扎的人来说(也许这可以为你指出其他引擎的正确方向)
如您所知,postgres以UTC格式存储日期时间 .
对我来说,这个问题原来不是在Sequelize中,而是在
pg
包中 .要修复它,请将其放在
sequelize = new Sequelize()
行之前我认为问题是
pg
包正在执行new Date(stringValue)
,它在utc本身中返回服务器's timezone, which is wrong (unless it'中的日期)有关详细信息,请参阅此主题:https://github.com/brianc/node-postgres/issues/429
我有同样的问题 . 我修好了这样的话:
config/sequelize.js
:momentJS(UTC):
希望它会帮助某人...... :)
我遇到了同样的问题,你错了 . 您应该使用
moment.utc
而不是moment
.看看当下的文档:http://momentjs.com/docs/#/parsing/utc/