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

首先时间格式很多

具体有多少种 可参考: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
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值