解决SpringBoot项目中Date类型数据在接口返回的时间不正确的问题

问题描述

在SpringBoot项目中,接口难免会使用到日期类型,我的数据使用的是mysql,表中的日期字段类型为 datetime ,java实体类中对应的类型为Date类。结果发现返回给前端的时间不对。
在这里插入图片描述
在这里插入图片描述
从图片可以看出:
1、时间为 00:00:00 ,变成了前一天的 04:00:00;
2、时间为16:53:40 , 变成了当天的 08:53:40;


原因分析:

经过分析,貌似时间如果是12小时制的话,就与正确的时间相差8小时了,这刚好也是时区差。

所以这里有两个坑:
1、在yaml配置文件中,使用了spring.jackson.data-format 来进行日期类型的格式化;

# 这是一开始的写法,不小心把 小时 写成了hh,这是12小时制
spring:  
  jackson:
    date-format: yyyy-MM-dd hh:mm:ss

2、就是时区问题,经过查阅自动配置类JacksonAutoConfiguration发现,如果没有配置时区的话,不会给时区赋值,默认就是null。
在这里插入图片描述

解决方案:

解决时间制以及时区问题,只需要对配置文件重新配置就可以解决问题。

#正确配置如下
spring:  
  jackson:
	#24小时制
    date-format: yyyy-MM-dd HH:mm:ss
    #设置东八时区
    time-zone: GMT+8

配置完成后重启项目,调用接口发现,时间已经可以正确获取了!

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值