package com.mossle.core.spring; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.convert.converter.Converter; public class DateConverter implements Converter<String, Date> { private static Logger logger = LoggerFactory.getLogger(DateConverter.class); private List<String> patterns = new ArrayList<String>(); public DateConverter() { patterns.add("yyyy-MM-dd'T'HH:mm:ss"); patterns.add("yyyy-MM-dd HH:mm"); patterns.add("yyyy-MM-dd"); } public Date convert(String text) { if (text == null) { return null; } for (String pattern : patterns) { Date date = tryConvert(text, pattern); if (date != null) { return date; } } return null; } public Date tryConvert(String text, String pattern) { DateFormat dateFormat = new SimpleDateFormat(pattern); dateFormat.setLenient(false); try { return dateFormat.parse(text); } catch (ParseException ex) { logger.debug(ex.getMessage(), ex); } return null; } public void setPatterns(List<String> patterns) { this.patterns = patterns; } }