参考:Jackson(2)之@JsonFormat和@DateTimeFormat本质区别
@Data
public class Person {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date birth;
}
@RestController
public class Test1Controller {
@GetMapping("test01")
// 如果这里不加@DateTimeFormat, 将不能把字符串转为日期
// 访问:localhost:8083/test01?date=2020-01-01 10:10:11
// 也可以使用form-data传参
// (get请求不能使用x-www-form-urlencoded)
public Object test01(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date) {
System.out.println(date);
return date;
}
// 如果Person#birth不加@DateTimeFormat, 将不能把字符串转为日期
// 访问:localhost:8083/test02?birth=2020-01-01 10:10:11
// 也可以使用form-data传参
// (get请求不能使用x-www-form-urlencoded)
@GetMapping("test02")
public Object test02(Person p) {
System.out.println(p);
return p;
}
// 如果不加@DateTimeFormat, 将不能把字符串转为日期
// 访问:localhost:8083/test03?date=2020-01-01 10:10:11
// 也可以使用form-data传参
// 也可以使用x-www-form-urlencoded带参数
@PostMapping("test03")
public Object test03(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date) {
System.out.println(date);
return date;
}
// 如果Person#birth不加@DateTimeFormat, 将不能把字符串转为日期
// 访问:localhost:8083/test03?date=2020-01-01 10:10:11
// 也可以使用form-data传参
// 也可以使用x-www-form-urlencoded带参数
@PostMapping("test04")
public Object test04(Person p) {
System.out.println(p);
return p;
}
// 不能使用@DateTimeFormat(SpringMvc注解), 而要使用@JsonFormat(Jackson注解),否则不能解析
// (之前错误的认为@DateTimeFormat是解析日期用的,@JsonFormat是格式化日期用的)
// 并且只能使用json格式传参
@PostMapping("test05")
public Object test05(@RequestBody Person p) {
System.out.println(p);
return p;
}
}