问题描述:

    系统时间正常,但是java程序显示的时间比系统时间落后8小时。

背景描述:

    发行版本:CentOS Linux release 7.6.1810 (Core) 

    内核版本:Linux localhost.localdomain 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

解决方法:

在tomcat中修改catalina.sh文件,在JAVA_OPTS 后面添加

-Duser.timezone=GMT+8

-Duser.timezone=GST+8

-Duser.timezone=Asia/Shanghai

如果你是使用java -jar的方式启动的,可以借鉴如下命令:

java -Duser.timezone=GMT+08 -Dfile.encoding=utf-8 -jar freeapis-service-crontab.jar

说明:jvm启动的时候是取的系统的时区设置,如果jvm的时间有问题,要从根本上解决这个问题需要修改系统的时区。

修改电脑时区的方法:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

扩展知识:

查看本机时区命令:

timedatectl

image.png