forked from fanruan/easyexcel
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.7 KiB
104 lines
2.7 KiB
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 Jiaju Zhuang |
|
**/ |
|
public class DateUtils { |
|
public static final String DATE_FORMAT_10 = "yyyy-MM-dd"; |
|
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(dateString, switchDateFormat(dateString)); |
|
} |
|
|
|
/** |
|
* 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; |
|
case 10: |
|
return DATE_FORMAT_10; |
|
default: |
|
throw new IllegalArgumentException("can not find date format for:" + dateString); |
|
} |
|
} |
|
|
|
/** |
|
* Format date |
|
* <p> |
|
* 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); |
|
} |
|
}
|
|
|