时区|springboot new Date() 时区差8小时

1 在k8s环境中,在代码中比较时间。new Date() 发下相差8小时

  • 检查宿主机 时区是 cst时区
  • 用java代码写出controller时区发现是GMT
    代码如下:
Calendar calendar = Calendar.getInstance(); System.out.println("目前时间:" + calendar.getTime()); System.out.println("Calendar时区::" + calendar.getTimeZone().getID()); System.out.println("user.timezone:" + System.getProperty("user.timezone")); System.out.println("user.country:" + System.getProperty("user.country")); System.out.println("默认时区:" + TimeZone.getDefault().getID()); 输出时区是 GMT 跟宿主机还不一样,搞不定运维,自己搞把

【时区|springboot new Date() 时区差8小时】看来还是时区搞的鬼-
1、数据库链接db添加参数 serverTimezone=Asia/Shanghai
2、springboot启动脚本添加 -Duser.timezone=GMT+08
3、jackson 全局配置
spring.jackson.date-format: yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone: GMT+8
4、jackson 注解
@JsonFormat(timezone = “GMT+8”, pattern = “yyyy-MM-dd HH:mm:ss”)

    推荐阅读