package com.alibaba.excel.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import com.alibaba.excel.exception.ExcelDataConvertException; /** * Date utils * * @author zhuangjiaju **/ public class DateUtils { public static final String DATE_FORMAT_14 = "yyyyMMddHHmmss"; public static final String DATE_FORMAT_17 = "yyyyMMdd HH:mm:ss"; public static final String DATE_FORMAT_19 = "yyyy-MM-dd HH:mm:ss"; public static final String DATE_FORMAT_19_FORWARD_SLASH = "yyyy/MM/dd HH:mm:ss"; private static final String MINUS = "-"; private DateUtils() {} /** * convert string to date * * @param dateString * @param dateFormat * @return * @throws ParseException */ public static Date parseDate(String dateString, String dateFormat) throws ParseException { if (StringUtils.isEmpty(dateFormat)) { dateFormat = switchDateFormat(dateString); } return new SimpleDateFormat(dateFormat).parse(dateString); } /** * convert string to date * * @param dateString * @return * @throws ParseException */ public static Date parseDate(String dateString) throws ParseException { return parseDate(switchDateFormat(dateString), null); } /** * switch date format * * @param dateString * @return */ private static String switchDateFormat(String dateString) { int length = dateString.length(); switch (length) { case 19: if (dateString.contains(MINUS)) { return DATE_FORMAT_19; } else { return DATE_FORMAT_19_FORWARD_SLASH; } case 17: return DATE_FORMAT_17; case 14: return DATE_FORMAT_14; default: throw new ExcelDataConvertException("can not find date format for:" + dateString); } } /** * Format date *

* yyyy-MM-dd HH:mm:ss * * @param date * @return */ public static String format(Date date) { return format(date, null); } /** * Format date * * @param date * @param dateFormat * @return */ public static String format(Date date, String dateFormat) { if (date == null) { return ""; } if (StringUtils.isEmpty(dateFormat)) { dateFormat = DATE_FORMAT_19; } return new SimpleDateFormat(dateFormat).format(date); } }