postMan输入日期,后端接收后不同

为什么我前端postMan输入的是2021-12-10

img

,而到了后端日期则显示为 2021-12-09 16:00:00呢

img

下面是有转换的代码

 //把生日转换成Date格式
        if (!"".equals(birth) && birth!=null){//birth为空会出错,因为有转换
            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            Date birthDate = new Date();
            try {
                birthDate = dateFormat.parse(birth);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            user.setBirth(birthDate);
        }

在数据库连接URL后加上serverTimezone=Asia/Shanghai,然后由于你数据库的字段类型是datetime,所以就算你格式化了时间格式,也会自动把后面的时分秒给填充进去,正常应该都是00:00:00,但是由于你没设置时区,所以会少8H

代码贴出来,是不是你时间格式转换的时候带上的

对象的date型字段,要指定时区和格式;
如:加注解

@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
private Date birth;

没有处理好时区问题,合理的做法是,时间的传输、计算、保存,都采用时间戳整数,只有界面展示才显示成日期时间格式

默认时区问题,看看配置文件有没有 spring.jackson.time-zone=GMT+8,没有加上就行了。

debug,跟踪一下就知道了

数据库中的birth字段数据类型修改为date类型,就可以了。

    alter table table_name  modify column birth date ;