springboot接口json日期格式化问题

前言

最近项目上在接口json格式,前端传递日期是string,实体类是Date,格式化的时候报了个错 Failed to convert property value of type ‘java.lang.String‘ to required type ‘java.util.Date,和明显是string不能转到date

解决

在相应的属性上使用 @DateTimeFormat 注解,并指定格式,见第 14 或 16 行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor // 无参构造方法
@AllArgsConstructor // 有参构造方法
@Data // Getters、Setters、toString() 等方法
public class BillsVo {

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
}

顺带说一下,返回json格式化日期,需要在相应的类的属性上使用 @JsonFormat 注解:

1
2
3
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date billtime;

如果使用的是fastjson,注解有所不同,但原理相同