文章目录
最近在Spring boot web项目中遇到请求参数中LocalDateTime的解析问题,顺便学习整理了下比较完整的时间处理方式,供参考。
1. Date处理
1.1 入参解析(String -> Date)
入参解析,保证通过http方式请求的时间参数(形如2019-12-22 22:11:38)能被正确解析成Date对象被Controller方法接受。
1.1.1 RequestParameter方式获取
通过@RequestParameter或者不加注解的方式获取参数时:
- 局部处理
使用 @DateTimeFormat 注解,添加到入参对象的属性上
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@ToString
@NoArgsConstructor
public class LdtInputForm {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date date;
}
或者注解到Controller方法的入参上
@PostMapping("/para")
@ResponseBody
public void fromParameter(@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date date) {
System.out.println("date = " + date);
}
- 全局处理
大部分情况下我们还是会使用全局方式,毕竟每个地方都加注解太low了。
注册Converter,只要注册一个bean即可
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
@Component
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
try {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
return null;