首先时间格式很多

具体有多少种 可参考: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"
}
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐