1 问题

  一个请求,返回一个对象,对象里面有日期,返回的对象的日期却比实际的日期少了一天

  如下图:在return返回的时候查看返回的对象的日期的值

  

 

   postman返回的结果如下图,几个日期都少了一天

 

 

 

2 产生原因


spring-boot默认使用Jackson对返回到前端的值进行序列化。Jackson框架默认的时区是UTC(协调世界时,又称统一世界时间),相比于东八区少了8小时(东+西-)。hh:12小时制,HH:24小时制。

 

3 解决方案


1) 使用@JsonFormat注解(推荐)

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

 

2) 在application.yml中使用如下配置

spring:
jackson:
date-format: yyyy-MM-dd hh:mm:ss
time-zone: GMT+8

或者在 bootstrap.properties 中配置

 

3) 数据库链接db添加参数 

serverTimezone=Asia/Shanghai

 

  注解虽然相对于配置文件比较麻烦,要写很多次,不过可以针对不同的字段的不同需求,进行单独配置