CentOS 上 Java 日志时间不对,通常不是 Java 本身的问题,而是系统时间 / 时区 / JVM 时区不一致导致的。可以按下面步骤排查和解决。
date
timedatectl
重点看:
Time zone 是不是你期望的(如 Asia/Shanghai)# CentOS 7/8
sudo timedatectl set-timezone Asia/Shanghai
Java 不一定用系统当前时区,尤其是:
在 Java 里打印时区:
System.out.println(java.util.TimeZone.getDefault());
或在日志里看时间差(比如慢 8 小时 = UTC)。
java -Duser.timezone=Asia/Shanghai -jar app.jar
export TZ=Asia/Shanghai
java -jar app.jar
Docker 容器默认是 UTC。
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或运行容器时:
docker run -e TZ=Asia/Shanghai ...
有些日志格式写死 UTC:
<pattern>%d{yyyy-MM-dd HH:mm:ss,Asia/Shanghai} %-5level %logger - %msg%n</pattern>
sudo hwclock --show
sudo hwclock --systohc
date 时间对timedatectl 时区对-Duser.timezoneTZ如果你愿意,可以把下面信息发我,我可以直接帮你定位: