关于前后端时间(LocalDateTime)对接问题

参考文章:关于前后端时间(LocalDateTime)对接问题_vben 日期 后台localdatetime接不到-CSDN博客

首先时间格式很多
具体有多少种 可参考:cn.hutool.core.date.DatePattern hutool工具类定义的常量

两个注解的注意事项


  // 前端  -> 后端时间处理。  请求体传 2021-10-26 15:12:49 。不可传:2021-10-26T15:12:49 。请求头不可以
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;
    
 // 前端  -> 后端时间处理。请求头可以,请求体不可以 (意思指:json入参)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 
     private LocalDateTime startTime;


我测试的时候,心情异常复杂。你说两个注解,在闹呢?

常见格式

// yyyy-MM-dd HH:mm:ss    2021-09-08 21:21:36
// yyyy-MM-dd'T'HH:mm:ss  2021-09-08T21:21:36
// EEE MMM dd HH:mm:ss zzz yyyy   jdk   Wed Sep 08 21:21:36 CST 2021


一般数据库是 dateTime或者bigint(个人更加推荐使用bigint),不管用什么样的,最重要的是统一!统一!统一!

若mysql使用 DateTime java可能用LocalDateTime(2021-09-08T21:21:36) 去接,
1-前端传参:2021-09-08T21:21:36
2-前端传参 :2021-09-08 21:21:36
这两种情况,对应dto字段上使用

// import com.fasterxml.jackson.annotation.JsonFormat;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")


若是bigint可以写个统一转换过滤器,或者写个工具类等等吧

测试
入参是:

// 2021-09-16T09:24:20.620Z  可以
// 2021-09-16T09:24:20  可以 
// 2021-09-16 09:24:20  不可以  抛出 JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String "2021-09-16 09:24:20": Failed to deserialize java.time.LocalDateTime
private LocalDateTime createTime;


// 加上 
// import com.fasterxml.jackson.annotation.JsonFormat;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;

// 2021-09-16 09:24:20  可以
// 2021-09-16T09:24:20.620Z 不可以
// 2021-09-16T09:24:20  不可以





总结
vo处理

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

@Data
public class TestTimeVo {
     // 后台  -> 前台 时间格式处理
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
     private LocalDateTime startTime;
}


前端展示

{
  "startTime": "2021-10-26 15:18:43"
}


DTO 处理

@Data
public class TimeDTo {
    // 前端  -> 后端时间处理。  请求体传 2021-10-26 15:12:49 ,不可传2021-10-26T15:12:49 ,请求头不可以
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;
}


前端入参:

{
  "startTime": "2021-10-26 15:18:43"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值