Java程序时区设置AsiaShanghai与JVM默认时区GMT+08冲突,如何解决?
- 内容介绍
- 文章标签
- 相关推荐
本文共计614个文字,预计阅读时间需要3分钟。
目录+经过排查,发现是JVM的默认时区为+JVM中设置为+在Spring程序中配置了spring.jackson.time-zone=GMT+08,部分时间相差一个小时问题,且是固定的时间差问题。
目录
- 经过排查,发现是JVM的默认时区为
- JVM中设置为
在Spring程序中配置了spring.jackson.time-zone=GMT+08时,部分时间相差一个小时问题,且是固定的时间出现了固定的时差问题。
经过排查,发现是JVM的默认时区为
Asia/Shanghai,两者不一致,然后Asia/Shanghai 这个时区并不一定与GMT+08这个时区相等,他们是2种定义标准。
Asia/Shanghai 这个代表的是中国的时区,但在历史中,有国家(包含中国)政策颁布了在1986-1991年等还存在夏令时。
在这样的时间区间,夏季时,会将时间拨快1个小时(即东9区时间),夏季结束时会再次将时间拨回一个小时(即东8区时间)。
所以要保证程序显示的时间没有问题,需要将JVM和spring.jackson.time-zone设置的时区保持一致即可解决问题。
JVM中设置为
Asia/Shanghai,经代码调试出现的底层时区调整的测试案例。
本文共计614个文字,预计阅读时间需要3分钟。
目录+经过排查,发现是JVM的默认时区为+JVM中设置为+在Spring程序中配置了spring.jackson.time-zone=GMT+08,部分时间相差一个小时问题,且是固定的时间差问题。
目录
- 经过排查,发现是JVM的默认时区为
- JVM中设置为
在Spring程序中配置了spring.jackson.time-zone=GMT+08时,部分时间相差一个小时问题,且是固定的时间出现了固定的时差问题。
经过排查,发现是JVM的默认时区为
Asia/Shanghai,两者不一致,然后Asia/Shanghai 这个时区并不一定与GMT+08这个时区相等,他们是2种定义标准。
Asia/Shanghai 这个代表的是中国的时区,但在历史中,有国家(包含中国)政策颁布了在1986-1991年等还存在夏令时。
在这样的时间区间,夏季时,会将时间拨快1个小时(即东9区时间),夏季结束时会再次将时间拨回一个小时(即东8区时间)。
所以要保证程序显示的时间没有问题,需要将JVM和spring.jackson.time-zone设置的时区保持一致即可解决问题。
JVM中设置为
Asia/Shanghai,经代码调试出现的底层时区调整的测试案例。

