jab*_*key 8 node.js sequelize.js momentjs
我在node.js中使用Sequelize来保存打开和关闭时间.我也使用moment.js来格式化.改变FindOrCreate我这样做:
result.open = moment(hours.open, "hh:mma").format("YYYY-MM-DD HH:mm:ss");
result.save()
...
Run Code Online (Sandbox Code Playgroud)
这工作正常,时间格式化为MySQL的日期时间格式.问题是当我检索时间时Seqquelize认为它是UTC时间并将其转换为EST(我的服务器时区).
我希望它以UTC的形式进入数据库并以相同的方式出现.有什么我做错了吗?为什么Sequelize在插入时不将其转换为UTC,但假设它的UTC出来了?另外,有没有办法让它尝试转换为我的服务器时区?
我有同样的问题。我已经这样修复了:
config/sequelize.js:
const sequelize = new Sequelize(database, user, password, {
host,
dialect: 'mysql',
port,
operatorsAliases,
dialectOptions: {
useUTC: true, // -->Add this line. for reading from database
},
timezone: '+02:00', // -->Add this line. for writing to database
pool: {
max: 10,
min: 0,
idle: 10000,
},
logging: console.log,
// define: {},
})
Run Code Online (Sandbox Code Playgroud)
momentJS(UTC):
const ACCEPT_FORMAT = 'YYYY-MM-DD hh:mm:ss'
const { start_date, end_date } = req.params
const start = moment.utc(start_date, ACCEPT_FORMAT)
const end = moment.utc(end_date, ACCEPT_FORMAT)
console.log(start)
console.log(end)
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助某人.... :)
我知道这已经很晚了,但是这是针对那些在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") );
});
Run Code Online (Sandbox Code Playgroud)
我认为问题在于pg软件包正在执行new Date(stringValue),该操作返回服务器时区中的日期,这是错误的(除非它在utc中)
有关更多信息,请参考以下线程:https : //github.com/brianc/node-postgres/issues/429
我遇到了同样的问题,你用错了时刻。你应该使用moment.utc而不是仅仅使用moment.
查看 moment 文档:http://momentjs.com/docs/#/parsing/utc/
result.open = moment.utc(hours.open, "hh:mma").format("YYYY-MM-DD HH:mm:ss");
result.save()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11913 次 |
| 最近记录: |