前后端时间参数对接

前后端时间参数对接

对接方式一

前端用指定pattern格式的时间字符串,后端用Date或者LocalDateTime类型的时间

方案:使用@JsonFormat与@DateTimeFormat注解

使用示例

0 数据对象
@Data
public class TimeParamDto {

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern ="yyyy-MM-dd" )
    private Date startDate;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss" )
    private LocalDateTime startDatetime;
    
}
01 前端请求参数

此时是字符串类型

img

02 controller

controller接受到已经由字符串变成Date类型(或者LocalDateTime)

@GetMapping("/date-test")
public TimeParamDto paramTimeGetTest(TimeParamDto dto){
        System.out.println(dto.getStartDate());//Thu Dec 23 00:00:00 CST 2021
        System.out.println(dto.getStartDatetime());//2021-12-23T12:12:12
        return dto;
    }
03 响应体:

由Date类型变成字符串,方便展示

{
  "startDate": "2021-12-22",
  "startDatetime": "2021-12-23 12:12:12"
}

注释详解

@DateTimeFormat

入参,用于格式化前端传给服务器字符串类型的时间

//pattern可以自定义
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat

出参,用于服务器传给前端json数据时对Date类型时间进行的格式化

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
注意事项:
  • pattern就表示需要转变的格式,timezone表示处在的时区(国内是东八区)
  • get请求,@DateTimeFormat和@JsonFormat注解可以同时使用,时间格式也可以不一致,推荐
  • post请求时,如果同时使用@DateTimeFormat和@JsonFormat注解,他们的时间格式必须一样,不推荐
  • 注意加上@Data注解
posted @ 2022-01-19 00:57  进击的小蔡鸟  阅读(621)  评论(0编辑  收藏  举报