一、问题描述:
springboot项目部署到服务器(centos7)tomcat之后,当程序中有需要获取系统时间时,发现获取到的系统时间与真实时间不准。
出现的问题图片举例:
根据图片,出现的问题是Linux的系统时间是1月4号的早上10点,但是我的web程序获取到的系统时间是1月3号的晚上9点,两者的时间差了13个小时。
二、问题的解决思路:
<1>、首先排查Linux的系统时间是否正确;
排查结果如下图所示:
由上图可以,Linux的系统时间是正常的,其中CST是上海的时间位于东八区,UTC是标准东0区,两者的差距为8个小时才正常。
在排除不是Linux系统时间造成的影响之后,进行如下步骤。
<2>、因为web程序是部署在Tomcat下的,所以考虑是Tomcat未设置标准时区造成的。
进入Tomcat的bin目录的catalina.sh文件
在首行添加如下配置:
JAVA_OPTS="${JAVA_OPTS} -Duser.timezone=GMT+08"
添加位置如图所示:
添加完成之后测试结果:
由图可知两个结果一致,则结论为修改Tomcat的时区设置则可解决springboot程序部署在Linux下获取到异常时间的问题