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 #用于格式化,可以不加,一般要加

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值