记录一次大坑的经过。项目在记录会员生日的时候发现在1974,1975,1979的特定月份,会员的生日信息写入到数据库会早一天。比如实际生日是1974-07-06,写入到数据库就会变成1974-07-05。因为项目是为台湾企业做的,想到是由时区引发的问题。
台湾在80年代之前和大陆在1986-1991这些年间实行过夏令时,也就是说这些年份大约在4月某一天会调快一小时,9月初又会调慢一小时。写入到数据库虽然显示 1974-07-05 ,实际时间戳代表的是 1974-07-05 23:00:00.
首先要确保应用服务器的时区和数据库服务器的时区是否一致,在数据库连接配置文件增加
&serverTimezone=Asia/Taipei
各个时区的关系大概
gmt=utc(格林尼治时间)
CST表示中国标准时间(China Standard Time)(正在使用)
cst=utc+8