采用SimpleDateFormat類的parse方法進行判斷,如果轉換不成功,就會出現異常。另外,還需要判斷字符串的長度,若不判斷,第二個字符串就會驗證通過,實際上也不是合法的。話不多說,且看代碼:
public static void main(String[] args) { System.out.println(isValidDate("2020-12-12 14:30:20", null));//true System.out.println(isValidDate("19-12-12 14:30:20", null));//false System.out.println(isValidDate("2020/12/12 14:30:20", null));//false System.out.println(isValidDate("2020-12-12 14:30", null));//false } public static boolean isValidDate(String str, String format) { if (format == null) { format = "yyyy-MM-dd HH:mm:ss"; } boolean convertSuccess = true; // 指定日期格式 SimpleDateFormat sdf = new SimpleDateFormat(format); try { sdf.setLenient(false); sdf.parse(str); if (str.length() != format.length()) { convertSuccess = false; } } catch (ParseException e) { // 如果throw java.text.ParseException或者NullPointerException,就說明格式不對 convertSuccess = false; } return convertSuccess; }