今天在项目里遇到个大坑,OpenJDK没默认时区,导致获取的时间是UTC的,和北京时间差8小时,解决方案如下几种.
1.springboot的Application中的main执行时加
System.setProperty("user.timezone","Asia/Shanghai");
2.JDBC的Class.forName后加
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Shanghai"));
3.java命令行上加
java -Duser.timezone=Asia/Shanghai -jar xxx.jar
4.dockerfile中加
RUN echo "Asia/Shanghai" > /etc/timezone
5.显示JVM中的配置,如果user.timezone没值则代表取操作系统的默认时区
java -XshowSettings:local