SpringBoot项目中Date类型数据在接口返回的时间不正确的问题解决
作者:大白菜小咸鱼
如果接口返回的Date类型时间与数据库中datetime不一致,可能是由于没有正确配置时区导致的,解决方法是在yaml配置文件中指定正确的日期格式和时区配置,修改配置并重启项目后,可以获得正确的时间,下面就来介绍一下
问题描述
在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
配置完成后重启项目,调用接口发现,时间已经可以正确获取了!
到此这篇关于SpringBoot项目中Date类型数据在接口返回的时间不正确的问题解决的文章就介绍到这了,更多相关SpringBoot Date接口返回内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!