public class ISDateFormat {
public static boolean isValidDate(String strDate) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
// 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2018-02-29会被接受,并转换成2018-03-01
format.setLenient(false);
Date date = format.parse(strDate);
//判断传入的yyyy年-MM月-dd日 字符串是否为数字
String[] sArray = strDate.split("-");
char[] yearChars = sArray[0].toCharArray();//年
char[] monChars = sArray[1].toCharArray();//月
char[] dayChars = sArray[2].toCharArray();//日
//判断格式
if (monChars.length == 2 && dayChars.length == 2 && yearChars.length == 4) {
for (String s : sArray) {
boolean isNum = s.matches("[0-9]+");
//+表示1个或多个(如"3"或"225"),*表示0个或多个([0-9]*)(如""或"1"或"22"),?表示0个或1个([0-9]?)(如""或"7")
if (!isNum) {
return false;
}
}
} else {
return false;
}
} catch (Exception e) {
// e.printStackTrace();
// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
return false;
}
return true;
}
}
参考文章