以前出现过时间差8小时的情况,是因为时区的问题,UTC代表的是全球标准时间 ,但是我们使用的是东八区时间,而这次却出现了相差13个小时的现象,同样也是因为时区的原因,解决方法是:连接数据库时url的时区使用中国标准时间。
1.查看linux服务器的系统时间
date
Thu Jun 6 11:36:22 CST 2019
没问题
2.log查看 Java 调用 new Date()
时间没问题
3.查看数据库时间
show variables like '%time_zone%'; select now(); SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
时间没问题。
4.定位问题
java将正确的时间传给了数据库,存起来就变成了不一样的时间。
所以猜测是java连接数据库出了问题。
mysql-connector-java的8.0后的版本会影响读取到的时区值
5.解决方案
Java 连接数据库时指定时区。
&serverTimezone=Asia/Shanghai