UTC时间Sequelize.js

我在node.js中使用Sequelize来保存打开和closures时间。 我也使用了moment.js格式。 改变一个FindOrCreate我这样做:

result.open = moment(hours.open, "hh:mma").format("YYYY-MM-DD HH:mm:ss"); result.save() ... 

这工作正常,时间格式化为MySQL的date时间格式。 问题是当我检索时间Seqquelize认为这是一个UTC时间,并将其转换为EST(我的服务器时区)。

我更喜欢它作为UTC进入数据库,并以相同的方式出现。 有什么我做错了吗? 为什么sequelize没有将其转换为UTC插入,但假设它是UTC出来? 也有,有没有办法转换到我的服务器时区?

我知道这是相当晚的,但在这里与那些与postgres斗争(也许这可以指出你在其他引擎的正确方向)

正如你所知,postgres以UTC存储date时间。

对我来说,这个问题原来不在Sequelize中,而是在pg包中。

为了解决它,把它放在你的sequelize = new Sequelize()行之前

 var types = require('pg').types; var timestampOID = 1114; types.setTypeParser(1114, function(stringValue) { return new Date( Date.parse(stringValue + "0000") ); }); 

我想问题是, pg包正在做new Date(stringValue) ,它返回服务器时区中的date,这是错误的(除非它是utc本身)

欲了解更多信息,请参阅此主题: https : //github.com/brianc/node-postgres/issues/429

我面临同样的问题,你使用错了。 你应该使用moment.utc而不是仅仅moment

看看目前的文档: http : //momentjs.com/docs/#/parsing/utc/

 result.open = moment.utc(hours.open, "hh:mma").format("YYYY-MM-DD HH:mm:ss"); result.save()