Node.js中sequelize时区的配置方法
基本概念
我们先来介绍一些可能当年在地理课上学习过的基本概念。
说起来,时间真是一个神奇的东西。以前人们通过观察太阳的位置来决定时间(比如:使用日晷),这就使得不同经纬度的地区时间是不一样的。后来人们进一步规定以子午线为中心,向东西两侧延伸,每 15 度划分一个时区,刚好是 24 个时区。然后因为一天有 24 小时,地球自转一圈是 360 度,360 度 / 24 小时 = 15 度/小时,所以每差一个时区,时间就差一个小时。
最开始的标准时间(子午线中心处的时间)是英国伦敦的皇家格林威治天文台的标准时间(因为它刚好在本初子午线经过的地方),这就是我们常说的 gmt(greenwich mean time)。然后其他各个时区根据标准时间确定自己的时间,往东的时区时间晚(表示为 gmt+hh:mm)、往西的时区时间早(表示为 gmt-hh:mm)。比如,中国标准时间是东八区,我们的时间就总是比 gmt 时间晚 8 小时,他们在凌晨 1 点,我们已经是早晨 9 点了。
但是 gmt 其实是根据地球自转、公转计算的(太阳每天经过英国伦敦皇家格林威治天文台的时间为中午 12 点),不是非常准确,于是后面提出了根据原子钟计算的标准时间 utc(coordinated universal time)。
一般情况下,gmt 和 utc 可以互换,但是实际上,gmt 是一个时区,而 utc 是一个时间标准。
下面开始本文的正文:
node.js sequelize时区配置
sequelize 默认情况下,保存日期时会转换成 +00:00时区,例如
提交数据:
time=2017-07-17 16:52:12
数据库中会保存成
2017-07-17 08:52:12
解决方式:
sequelize时配置时区
timezone: '+08:00'
如:
const sequelize = new sequelize(config.database, config.username, config.password, { host: config.host, port: config.port, dialect: 'mysql', pool: { max: 5, min: 0, idle: 10000 }, timezone: '+08:00' });
ps:链接的所有数据库(读和写)都要设置合适的时区,否则会出现时间写入不一致的情况
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
上一篇: javaEE性能优化