前后端时间参数对接

前后端时间参数对接

对接方式一

前端用指定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注解

上一篇:通过控制台输入3个日期(yyyy-MM-dd格式),然后转换为Date对象后存入 * 集合,然后对该集合排序后输出所有日期。


下一篇:java日期格式yyyyMMdd格式化为yyyy-MM