前后端时间参数对接
对接方式一
前端用指定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 前端请求参数
此时是字符串类型
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注解