我正在使用sequelize的2.0.0-rc8版本。当我存储本地日期时间时,它始终存储UTC日期时间。是否可以使用sequelize存储本地日期时间?
答案 0 :(得分:9)
正如其他人已经在评论中暗示的那样,sequelize将日期转换为UTC - 这是设计的,因为它使续集更容易使用,并确保不同时区的续集客户端将看到相同的时间戳。
在javascript中,日期将始终位于服务器的本地时间 - 这是javascript日期对象的属性。
您可以使用timezone
选项告诉sequelize将日期存储在其他时区:
new Sequelize(db, user, pass, {
timezone: '+01:30'
});
这将使用该时区保存所有日期,并假设当前保存在数据库中的所有日期都在该时区
答案 1 :(得分:0)
也许您应该在mysql中正确存储UTC时间,以便不需要时区。
例如,我的mysql服务器位于时区“ +08:00”,但是如果我将时区更改为“ -05:00”,则该操作不会中断任何操作。
只需像这样使用续集即可:
“ mysql2”:“ ^ 1.6.4”, “ sequelize”:“ ^ 4.41.2”
const sequelize = new Sequelize(database, username, password, {
host: hostname,
port: port,
dialect: 'mysql',
dialectOptions: {
typeCast: function (field, next) {
if (field.type == 'DATETIME' || field.type == 'TIMESTAMP') {
return new Date(field.string() + 'Z');
}
return next();
}
},
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
});