spring boot注册一个全局的类型转换器,转换表单中的string 到Date
@Configuration public class WebConfig { // IMPORTANT: keep the order private final static String[] dateFormats = { "EEE, d MMM yyyy HH:mm:ss z", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "yyyy-MM-dd HH:mm:ss.SSSZ", "yyyy-MM-dd HH:mm:ssZ", "yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd HH:mm:ss"}; @Autowired private RequestMappingHandlerAdapter handlerAdapter; @PostConstruct public void addConversionConfig() { ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer)handlerAdapter.getWebBindingInitializer(); if (initializer.getConversionService() != null) { GenericConversionService genericConversionService = (GenericConversionService)initializer.getConversionService(); genericConversionService.addConverter(new StringToDateConverter()); } } public class StringToDateConverter implements Converter<String, Date> { @Override public Date convert(String dateString) { Assert.hasText(dateString, "Null or emtpy date string"); // Supported date formats: // EEE, d MMM yyyy HH:mm:ss z e.g. Fri, 20 Aug 2016 08:45:15 GMT // yyyy-MM-dd HH:mm:ss.SSSZ e.g. 2016-08-19 17:36:20.235+0800 // yyyy-MM-dd'T'HH:mm:ss.SSSZ e.g. 2016-08-19T17:36:20.235+0800 // yyyy-MM-dd HH:mm:ssZ e.g. 2016-08-19 17:36:20+0800 // yyyy-MM-dd HH:mm:ss.SSS (UTC time), e.g. 2016-08-19 09:36:20.235 // yyyy-MM-dd HH:mm:ss (UTC time), e.g. 2016-08-19 09:36:20 Date date = DateUtils.parseDate(dateString, dateFormats); if (date == null) { String errMsg = String.format("Failed to convert [%s] to [%s] for value '%s'", String.class.toString(), Date.class.toString(), dateString); throw new IllegalArgumentException(errMsg); } return date; } } }