调试代码中,肯定了new Date();
出来的时间数据是准确了,没有出现差14小时状况,经过Spring hibernate jdbc这一路保存到mysql数据库中,就出现了14小时问题。html
# 查看mysql时区 mysql> SELECT @@global.time_zone, @@session.time_zone; +--------------------+---------------------+ | @@global.time_zone | @@session.time_zone | +--------------------+---------------------+ | SYSTEM | +08:00 | +--------------------+---------------------+ # 东八区,没有问题的 # 主动查询当前时间 mysql> select now(); +---------------------+ | now() | +---------------------+ | 2018-12-18 17:11:05 | +---------------------+ 1 row in set (0.00 sec) # 没有问题,时间与当前时间是一致的。
到这里,基本上排除了是mysql数据库时区不对的问题,以前在代码中debug,也没有发现是代码中的问题。到这里,只有尝试在jdbc中主动设置东八区。以前就出现过spring boot中jackson时间格式和东八区的设置问题,会不会spring的jdbc也是须要设置东八区类?mysql
只须要中添加&serverTimezone=GMT%2B8
设置jdbc时区为东八区就能够了,GMT+8
表示东八区,当jdbc只能认识GMT%2B8
写法。例如:spring
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8