目录
0. 定义变量值
public static final String YYYYMMDD = "yyyyMMdd";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static final String YYYY_MM = "yyyy-MM";
public static final String YYYY_YEAR_MM_MOUTH_DD_DAY = "yyyy年MM月dd日";
public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
public static final String YYYY_SLASH_MM_SLASH_DD = "yyyy/MM/dd";
public static final String YYYY_SLASH_MM_SLASH_DD_HH_MM_SS = "yyyy/MM/dd HH:mm:ss";
public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
private static final String FORMAT01 = "-";
private static final String FORMAT02 = ":";
private static final String FORMAT03 = "/";
private static final String FORMAT04 = "";
private static final String YEAR = "年";
private static final String MONTH = "月";
private static final String DAY = "日";
private static final Integer EIGHT = 8;
private static final Map<String, SimpleDateFormat> SIMPLE_DATE_FORMAT_MAP = new HashMap<String, SimpleDateFormat>(){{
put(YYYYMMDD,new SimpleDateFormat(YYYYMMDD));
put(YYYY_MM_DD,new SimpleDateFormat(YYYY_MM_DD));
put(YYYY_MM_DD_HH_MM_SS,new SimpleDateFormat(YYYY_MM_DD_HH_MM_SS));
put(YYYY_SLASH_MM_SLASH_DD,new SimpleDateFormat(YYYY_SLASH_MM_SLASH_DD));
put(YYYY_SLASH_MM_SLASH_DD_HH_MM_SS,new SimpleDateFormat(YYYY_SLASH_MM_SLASH_DD_HH_MM_SS));
put(YYYYMMDDHHMMSS,new SimpleDateFormat(YYYYMMDDHHMMSS));
}};
1. String 转 LocalDate
/**
* 支持类型 yyyy-MM-dd yyyy-MM-dd HH:mm:ss yyyy/MM/dd yyyy/MM/dd HH:mm:ss yyyy年MM月dd日
* @param dateStr
* @return
*/
public static LocalDate str2LocalDate(String dateStr) {
LocalDate res = null;
if (!StringUtils.isEmpty(dateStr)) {
if (dateStr.contains(YEAR)) {
dateStr = dateStr.replace(YEAR, FORMAT01);
}
if (dateStr.contains(MONTH)) {
dateStr = dateStr.replace(MONTH, FORMAT01);
}
if (dateStr.contains(DAY)) {
dateStr = dateStr.replace(DAY, FORMAT04);
}
String pattern = YYYY_MM_DD;
if (dateStr.contains(FORMAT02)) {
if (dateStr.contains(FORMAT01)) {
pattern = YYYY_MM_DD_HH_MM_SS;
} else {
pattern = YYYY_SLASH_MM_SLASH_DD_HH_MM_SS;
}
} else if (dateStr.contains(FORMAT03)) {
pattern = YYYY_SLASH_MM_SLASH_DD;
}
res = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
}
return res;
}
2. String 转 Date
/**
* 支持类型 yyyyMMdd yyyy-MM-dd yyyy-MM-dd HH:mm:ss yyyy/MM/dd yyyy/MM/dd HH:mm:ss yyyy年MM月dd日
* @param dateStr
* @return
*/
public static Date str2Date(String dateStr) {
Date date = null;
if (!StringUtils.isEmpty(dateStr)) {
if (dateStr.contains(YEAR)) {
dateStr = dateStr.replace(YEAR, FORMAT01);
}
if (dateStr.contains(MONTH)) {
dateStr = dateStr.replace(MONTH, FORMAT01);
}
if (dateStr.contains(DAY)) {
dateStr = dateStr.replace(DAY, FORMAT04);
}
SimpleDateFormat sdf = null;
String pattern = YYYY_MM_DD;
if (dateStr.contains(FORMAT02)) {
if (dateStr.contains(FORMAT01)) {
pattern = YYYY_MM_DD_HH_MM_SS;
} else {
pattern = YYYY_SLASH_MM_SLASH_DD_HH_MM_SS;
}
} else if (dateStr.contains(FORMAT03)) {
pattern = YYYY_SLASH_MM_SLASH_DD;
} else if (dateStr.length() == EIGHT) {
if (dateStr.contains(FORMAT01)) {
pattern = YYYY_MM_DD;
} else {
pattern = YYYYMMDD;
}
}
sdf = SIMPLE_DATE_FORMAT_MAP.get(pattern);
date = sdf.parse(dateStr, new ParsePosition(0));
}
return date;
}