1. 程式人生 > 實用技巧 >java實現判斷時間是否為合法時間

java實現判斷時間是否為合法時間

最近遇到一個需求,輸入字串,判斷為日期的話再進行後面的比較大小之類的操作,但是合法日期的格式也是比較多的,利用正則表示式又太長了。所以後面利用的方法就是,先把輸入的字串轉成一種固定的時間格式,然後利用java轉String為Date的方法,看程式是否丟擲異常來判斷日期是否合法,需要注意的是需要將驗證設定為嚴格的,也就是lenient設定為false,預設為true,不然的會出現例如2019-03-1223為正確的日期型別,主要是直接把1223換算成年月日加上去了。

下面程式碼實現:

 /**
* @author Carol
* @date 2020年7月14日18:11:16
* 驗證字串是否為合法日期 支援2019-03-12 2019/03/12 2019.03.12 HH:mm:ss HH:mm常用格式
* @param date
* @return
*/
public static boolean verifyDateLegal(String date) {
if ((date.contains("-") && date.contains("/"))
|| (date.contains("-") && date.contains("."))
|| (date.contains("/") && date.contains("."))){
return false;
}
date.trim();
StringBuilder timeSb = new StringBuilder();
date = date.replaceAll("[\\.]|[//]", "-");
String[] time = date.split(" ");
timeSb.append(time[0]);
timeSb.append(" ");
if (time.length > 1) {
timeSb.append(time[1]);
}
int i = time.length > 1 ? time[1].length() : 0;
for ( ; i < 8 ; i ++) {
if (i == 2 || i == 5){
timeSb.append(":");
} else {
timeSb.append("0");
}
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
sdf.setLenient(false);
sdf.parse(timeSb.toString());
return true;
} catch (ParseException e) {
return false;
}
}