Springboot后端返回数据时差问题

问题背景

在使用SpringBoot开发的后端系统返回数据(包含Date类型的数据)时,返回结果与实际希望的结果差一天(最后发现是8小时)
可能出错的部分如下:

  1. 数据库存储数据错误(可直接查询数据库数据进行排查,查询后发现并无错误)
  2. java从mysql中读取时出现时差问题(debug发现,并无此问题)
  3. 在执行业务逻辑时时间被更改(业务逻辑无修改时间部分)
  4. java返回给前端时出现时差问题

再观察一下返回的结果(如图):
在这里插入图片描述
可以发现是前一天的16:00
与期望的结果相差8h。(Tips:中国标准时间为UTC+8)

问题原因

SpringBoot的两个注解:

@RestController
@Controller + @ResponseBody

这两个注解无论用哪个,都默认返回Json格式的数据,对于Date类型,将会被默认的Jackson框架进行转换,其默认时区是GMT。
对于中国时区而言,应该为GMT+8。

解决方案

在application.properties中添加配置:

spring.jackson.time-zone=GMT+8
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss #用于格式化,可以不加,一般要加

修改后,返回的结果正常:
在这里插入图片描述

你可能感兴趣的:(Debug,spring,boot,后端,java)