当前位置:   article > 正文

springboot/springmvc处理前台字符串日期自动转换成后台date类型的三种办法_dateconverterconfig

dateconverterconfig

第1种:使用

@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

注解在实体字段上,
这种方式的优点是:可以灵活的定义接收的类型
缺点很明显:不能全局统一处理,需要为每个需要转换字段都加注解太麻烦

第2种:写一个BaseController,每一个需要处理的controller继承这个BaseController,在BaseController里使用@InitBinder写一个全局转换日期方法:

  1. @InitBinder
  2. public void initBinder(ServletRequestDataBinder binder) {
  3.     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  4.     binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));        
  5. }


这种方式的优点是:可以全局统一处理,不用再关注具体需要转换的日期字段
缺点就是:只能定义一种日期类型,我定义了”yyyy-MM-dd”就没法定义”yyyy-MM-dd HH:mm:ss”,
如果我前台不同页面过来的日期格式不一样就不好办了

第3种:自定义DateConverterConfig实现一下spring提供的Converter,重写里面的convert方法:

  1. /**
  2.  * 全局handler前日期统一处理
  3.  * @author zhanghang
  4.  * @date 2018/1/11
  5.  */
  6. @Component
  7. public class DateConverterConfig implements Converter<String, Date> {
  8.     private static final List<String> formarts = new ArrayList<>(4);
  9.     static{
  10.         formarts.add("yyyy-MM");
  11.         formarts.add("yyyy-MM-dd");
  12.         formarts.add("yyyy-MM-dd hh:mm");
  13.         formarts.add("yyyy-MM-dd hh:mm:ss");
  14.     }
  15.     @Override
  16.     public Date convert(String source) {
  17.         String value = source.trim();
  18.         if ("".equals(value)) {
  19.             return null;
  20.         }
  21.         if(source.matches("^\\d{4}-\\d{1,2}$")){
  22.             return parseDate(source, formarts.get(0));
  23.         }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
  24.             return parseDate(source, formarts.get(1));
  25.         }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
  26.             return parseDate(source, formarts.get(2));
  27.         }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
  28.             return parseDate(source, formarts.get(3));
  29.         }else {
  30.             throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
  31.         }
  32.     }
  33.     /**
  34.      * 格式化日期
  35.      * @param dateStr String 字符型日期
  36.      * @param format String 格式
  37.      * @return Date 日期
  38.      */
  39.     public  Date parseDate(String dateStr, String format) {
  40.         Date date=null;
  41.         try {
  42.             DateFormat dateFormat = new SimpleDateFormat(format);
  43.             date = dateFormat.parse(dateStr);
  44.         } catch (Exception e) {
  45.         }
  46.         return date;
  47.     }
  48. }


原文链接:https://blog.csdn.net/eumenides_/article/details/79033505

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/229720
推荐阅读
相关标签
  

闽ICP备14008679号