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