因为前端页面根据用户配置选择日期格式,后端接收到日期字符串以后需要将其转为日期格式进行比较,转换方法parseDate
public class DateUtils {
private static String[] parsePatterns = {
"yyyy-MM-dd",
"yyyy-MM-dd HH:mm:ss",
"yyyy-MM-dd HH:mm",
"yyyy-MM-dd HH:mm:ss.SSS",
"yyyy年MM月dd日",
"yyyy年MM月dd日 HH时mm分ss秒",
"yyyy年MM月dd日 HH时mm分",
"yyyy/MM/dd HH:mm:ss",
"yyyy/MM/dd HH:mm", "yyyy/MM/dd",
"yyyy/MM/dd HH:mm:ss.SSS",
"yyyyMMdd",
"yyyyMMddHHmmss",
"yyyyMMddHHmm",
"yyyyMMddHHmmssSSS"
};
/**
*将日期字符串转换为Date日期格式
* @return
*/
public static Date parseDate(String str){
if (StringUtils.isBlank(str)) {
return null;
}
try {
return DateUtils.parseDate(str, parsePatterns);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* 获取的所传日期的前几月日期
* @return
*/
public static Date getDateAfterMonth(Date date, int monthCount) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH,-3);
return cal.getTime();
}
/**
* 校验日期格式是否是"yyyy-MM-dd"
* @return
*/
public static boolean matcherDate(String date){
String date_regex= "^[1-9]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$";
boolean matches = Pattern.matches(date_regex, date);
if(!matches){
return matches;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
try {
sdf.parse(date);
} catch (ParseException e) {
e.printStackTrace();
return false;
}
return matches;
}
}