日期类型转换
SpringMVC默认不支持字符串到日期的自动转换,需要额外配置。
DateTimeFormat注解
单个字段
Java
public class User {
private String username;
private Integer age;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
// getter/setter
}
控制器方法
Java
@PostMapping("/user/save")
public String saveUser(User user) {
System.out.println(user.getBirthday());
return "success";
}
请求:/user/save?username=张三&birthday=2000-01-15
方法参数直接使用
Java
@GetMapping("/query")
public String query(
@DateTimeFormat(pattern = "yyyy-MM-dd") Date startDate,
@DateTimeFormat(pattern = "yyyy-MM-dd") Date endDate
) {
System.out.println(startDate + " - " + endDate);
return "success";
}
请求:/query?startDate=2024-01-01&endDate=2024-12-31
常用日期格式
| 格式 | 示例 |
|---|---|
| yyyy-MM-dd | 2024-01-15 |
| yyyy/MM/dd | 2024/01/15 |
| yyyy-MM-dd HH:mm:ss | 2024-01-15 10:30:00 |
| yyyy年MM月dd日 | 2024年01月15日 |
ISO标准格式
Java
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
private Date date;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private Date dateTime;
自定义转换器
全局日期转换器配置:
Java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
registrar.setDateFormatter(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
registrar.registerFormatters(registry);
}
}
@DateTimeFormat只用于请求参数绑定,返回JSON日期格式需配合@JsonFormat。
要点总结
- @DateTimeFormat:参数绑定时的日期格式化
- pattern:自定义日期格式
- iso:使用ISO标准格式
- 全局配置:实现WebMvcConfigurer接口
📝 发现内容有误?点击此处直接编辑