SpringBoot JSON时间数据差8小时

写项目遇到一个大坑,md 突然发现前端传的时间和我接收到的时间不一样,我传回去的时间和显示的时间不一样,找了一会,定位问题发生在Json格式化的过程中.

原因是spring转json的默认实现jackson中会根据时区去转换时间,而jackson的默认时区跟国内应该是相差8小时,所以在时间换算上自动减去了8小时。

可以通过jackson 的注解 @JsonFormat 解决问题

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss" ,timezone = "GMT+8")
private Date createTime;
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss" ,timezone = "GMT+8")
private Date updateTime;

也可以在 SpringBoot 配置文件中统一配置,推荐使用这种方式:

  spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
  spring.jackson.time-zone=GTM+8 #或者Asia/Shanghai

参考

文章1: https://www.cnblogs.com/wbxk/p/10679556.html

文字2: https://www.cnblogs.com/ZJPaang/p/13166555.html