-
1、背景:最近工作过程中发现了一个奇怪的现象,使用jdk1.8+springboot开发的jar,当部署到centos7上时,new date生成的时间会比系统时间慢了12小时,写入到mysql数据库也显示比系统时间慢12小时
-
2、问题排查:因为数据源里配置了serverTimezone=GMT+8,因此mysql不背锅,而且即便是时区问题也应是差8而不是差12小时(捂脸)
-
3、引用网上大佬的经验:
在只剩下最艰难的一条道路可走时,我们意外的发现了一个好消息,应用在linux上的日志时间也是错误的,这个无疑给我们确定了,问题就是应用程序出的,而且可以知道应该就是时区出了问题,一般这种情况都是修改下jre lib下得时区,可是1.8版本中我并没有找到对应得文件夹,还有方法是修改tomcat得catalina配置文件,可是我用的是springboot,通过一通百度,最终发现了一个比较好使用的方法,在springboot 的启动类中添加这么一个方法,至此,测试系统时间修改成功
//方法名随意,主要是@PostConstruct注解修饰,还在项目启动类加载后执行该方法 @PostConstruct void setDefaultTimezone(){ TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai")); }
当jdk1.8+springboot遇上时间差12小时
于 2020-08-12 11:01:29 首次发布