| /** | 
|  * Copyright (c) 2018 人人开源 All rights reserved. | 
|  * | 
|  * https://www.renren.io | 
|  * | 
|  * 版权所有,侵权必究! | 
|  */ | 
|   | 
| package com.zt.common.convert; | 
|   | 
| import org.slf4j.Logger; | 
| import org.slf4j.LoggerFactory; | 
| import org.springframework.core.convert.converter.Converter; | 
| import org.springframework.stereotype.Component; | 
| import org.springframework.util.StringUtils; | 
|   | 
| import java.text.DateFormat; | 
| import java.text.SimpleDateFormat; | 
| import java.util.ArrayList; | 
| import java.util.Date; | 
| import java.util.List; | 
|   | 
| /** | 
|  * 日期转换 | 
|  * | 
|  * @author Mark sunlightcs@gmail.com | 
|  */ | 
| @Component | 
| public class DateConverter implements Converter<String, Date> { | 
|     private static final Logger logger = LoggerFactory.getLogger(DateConverter.class); | 
|     private static List<String> formatList = new ArrayList<>(5); | 
|     static { | 
|         formatList.add("yyyy-MM"); | 
|         formatList.add("yyyy-MM-dd"); | 
|         formatList.add("yyyy-MM-dd hh:mm"); | 
|         formatList.add("yyyy-MM-dd hh:mm:ss"); | 
|         formatList.add("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); | 
|     } | 
|   | 
|     @Override | 
|     public Date convert(String source) { | 
|         String value = source.trim(); | 
|         if (StringUtils.isEmpty(value)) { | 
|             return null; | 
|         } | 
|   | 
|         if(source.matches("^\\d{4}-\\d{1,2}$")){ | 
|             return parseDate(source, formatList.get(0)); | 
|         }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){ | 
|             return parseDate(source, formatList.get(1)); | 
|         }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){ | 
|             return parseDate(source, formatList.get(2)); | 
|         }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){ | 
|             return parseDate(source, formatList.get(3)); | 
|         }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}.*T.*\\d{1,2}:\\d{1,2}:\\d{1,2}.*..*$")){ | 
|             return parseDate(source, formatList.get(4)); | 
|         } else { | 
|             throw new IllegalArgumentException("Invalid boolean value '" + source + "'"); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 格式化日期 | 
|      * @param dateStr String 字符型日期 | 
|      * @param format String 格式 | 
|      * @return Date 日期 | 
|      */ | 
|     public Date parseDate(String dateStr, String format) { | 
|         Date date = null; | 
|         try { | 
|             DateFormat dateFormat = new SimpleDateFormat(format); | 
|             date = dateFormat.parse(dateStr); | 
|         } catch (Exception e) { | 
|             logger.error("Formatted date with date: {} and format : {} ", dateStr, format); | 
|         } | 
|         return date; | 
|     } | 
|   | 
| } |