美文网首页
springboot Date解析String类型的参数

springboot Date解析String类型的参数

作者: nickbi | 来源:发表于2018-03-12 13:50 被阅读0次

    1.首先建立String to Date 的解析实现

    import org.apache.commons.lang3.StringUtils;
    import org.springframework.core.convert.converter.Converter;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class StringToDateConverter implements Converter<String, Date> {
    
        private static final String dateFormat = "yyyy-MM-dd HH:mm:ss";
        private static final String shortDateFormat = "yyyy-MM-dd";
    
        @Override
        public Date convert(String value) {
    
            if (StringUtils.isEmpty(value)) {
                return null;
            }
    
            value = value.trim();
    
            try {
                if (value.contains("-")) {
                    SimpleDateFormat formatter;
                    if (value.contains(":")) {
                        formatter = new SimpleDateFormat(dateFormat);
                    } else {
                        formatter = new SimpleDateFormat(shortDateFormat);
                    }
    
                    Date dtDate = formatter.parse(value);
                    return dtDate;
                } else if (value.matches("^\\d+$")) {
                    Long lDate = new Long(value);
                    return new Date(lDate);
                }
            } catch (Exception e) {
                throw new RuntimeException(String.format("parser %s to Date failed", value));
            }
            throw new RuntimeException(String.format("parser %s to Date failed", value));
        }
    
    
    }
    

    2.创建全局的解析配置

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.convert.support.GenericConversionService;
    import org.springframework.web.bind.support.ConfigurableWebBindingInitializer;
    import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
    import javax.annotation.PostConstruct;
    
    @Configuration
    public class DateHandlerAdapter {
    
        @Autowired
        private RequestMappingHandlerAdapter handlerAdapter;
    
        /**
         * 增加字符串转日期的全局适配器
         */
    
        @PostConstruct
        public void initEditableAvlidation() {
    
            ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) handlerAdapter
                    .getWebBindingInitializer();
            if (initializer.getConversionService() != null) {
                GenericConversionService genericConversionService = (GenericConversionService) initializer
                        .getConversionService();
    
                genericConversionService.addConverter(new StringToDateConverter());
    
            }
    
        }
    
    }
    

    添加完这两个文件以后 在传参数类型为Date的参数时就不会再报 date解析失败的错误了。

    相关文章

      网友评论

          本文标题:springboot Date解析String类型的参数

          本文链接:https://www.haomeiwen.com/subject/elynfftx.html