容器内部时区影响正常获取时间

193 阅读1分钟

前提:使用云容器

在今天测试的时候,发现入历史表的his_time与当前中国时间差距8小时,也就说现在是下午14点,入历史表的当前时候给的是早上6点。查看代码中给此字段的信息
image.png 那就对劲了,原来是系统默认时间出现问题:
image.png 看了下时区,是GMT,不对劲,我们应该使用UTC的时区,一开始想法,可以使用

LocalDateTime.now(Clock.systemUTC())的,但是整个模块里面可不止,那就修改容器内部的时区,那就在创建镜像
的时候修改下Dockerfile,增加下面的:
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
  

或者直接设置jvm的时区:

java -Duser.timezone="Asia/Shanghai" -jar xxxx.jar