openjdk8的时区问题

在使用openjdk8-jdk-alpine镜像时遇到时区问题,表现为springboot日志和数据库插入时间错误。分析原因是镜像缺少时区信息。通过在启动参数中设置时区,成功解决日志和数据库时间异常,确保时间正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题现象

今天碰到一个奇怪的问题。宿主机时间正确,容器时间正确,数据库时间正确。
但是,springboot日志时间错误,数据库插入数据时间错误,相差8小时。
这明显是因为时区错误导致的问题,但是所有地方时区检查都是正确的,一时找不到方向。

分析问题

由于打印日志的时间不对,初步判断是jre的时区错误,首先解决日志时间错误问题。

解决方法

通过百度,初步判断是创建镜像时使用的基础镜像openjdk:8-jdk-alpine本身不带时区信息导致的,因此在启动jar包时添加参数,经测试问题解决。日志时间正常,插入数据库时间正常。

java -jar -Duser.timezone=Asia/Shanghai app.jar

其他方案

网上还说了两个其他方案,但是测试都无效。

  1. 在配置文件application.yaml中添加时区配置
spring:
  jackson:
    time-zone: Asia/Shanghai
  1. 在Application启动类中添加设置时区代码
@PostConstruct
void setDefaultTimezone() {
 TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值