SpringBoot Get 请求如何将一个时间戳转换为Date, 最好是框架原本就有的? 400 报错
@GetMapping("/test") public Person test(Person person){ return person; }
public class Person { private Date date; }
方法一:自己仿写个CustomDateEditor
@InitBinder protected void init(HttpServletRequest request, ServletRequestDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); }
方法二:等有缘人补充 0.0
######回复 @鶴嘯九天 : 是让你自定义 CustomDateEditor 解析类...######这个是 2020/03/12 格式的解析,不是我提到的时间的解析。不过还是谢谢!######直接用@JsonFormat 就可以吧。 jackson 包 spring boot 2.2.5亲测
1.
/** * date序列化 */ @InitBinder protected void init(WebDataBinder binder) { // Date 类型转换 binder.registerCustomEditor(Date.class, new PropertyEditorSupport() { @Override public void setAsText(String text) { setValue(dataBinder(text)); } }); }
2.
protected Date dataBinder(String value) { //常规的日期格式 Date parseDate = DateUtils.parseDate(value); //时间戳 if (null == parseDate) { return new Date(Long.valueOf(value)); } return parseDate; }
工具类:
/** * 日期型字符串转化为日期 格式 * { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", * "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", * "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm" } */ public static Date parseDate(Object str) { if (str == null) { return null; } try { return parseDate(str.toString(), parsePatterns); } catch (ParseException e) { return null; } }
常规日期格式:
private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM-dd HH", "yyyy-MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM/dd HH", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM.dd HH", "yyyy.MM"};
这样写应该可以的吧
######回复 @鶴嘯九天 : 那就不知道了,如果题主有发现@也告诉我一下######这样写是没啥问题的,我想的是有没有类似@DateFormat 这种注解,是由原框架实现的,不用自己封装。因为jackson的源码是有对时间戳处理的,但是 @DateFormat 就没有办法了######spring.jackson.date-format= yyyy-MM-dd HH:mm:ss
######在@Controller注释的类中,添加如下方法:
@InitBinder
protected void init(WebDataBinder binder) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
df.setLenient(false);
binder.registerCustomEditor(Date.class,new CustomDateEditor(df,true));
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。