node.js – Sequelize.js中的UTC DATE

前端之家收集整理的这篇文章主要介绍了node.js – Sequelize.js中的UTC DATE前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在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出来了?另外,有没有办法让它尝试转换为我的服务器时区?

解决方法

我知道这已经很晚了,但是对于那些与postgres挣扎的人来说(也许这可以指出你在其他引擎的正确方向)

如您所知,postgres以UTC格式存储日期时间.

对我来说,这个问题原来不是在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包正在执行新的Date(stringValue),它返回服务器时区的日期,这是错误的(除非它在utc本身)

有关详细信息,请参阅此主题
https://github.com/brianc/node-postgres/issues/429

原文链接:https://www.f2er.com/nodejs/241293.html

猜你在找的Node.js相关文章