Java 中校驗時間格式的常見方法
前言:
在實際項目開發(fā)中,跟時間參數打交道是必不可少的,為了保證程序的安全性、健壯性,一般都會對參數進行校驗,其他類型的參數校驗很好實現,那你知道時間參數的是怎么校驗的嗎?估計部分朋友在項目開發(fā)中,并沒有對時間參數進行校驗,本篇分享時間參數的場常見校驗方法。
時間參數的校驗方向?
格式是否正確,比如業(yè)務設計需要的是 yyyy-MM-dd 格式,而傳參是 yyyy-MM-dd HH:mm:ss 格式等等。是否可以解析為正常時間,比如:2月30號這種時間。時間范圍是否在業(yè)務要求之內,比如要求最大時間范圍為一年。 校驗方法
方法一:
使用 SimpleDateFormat 校驗,SimpleDateFormat(JDK8 之前常用的方法)。
public class DateValidUtil {
public static void main(String[] args) {
System.out.println("結果1" + isValid("2024-13-06 12:12", "yyyy-MM-dd"));
System.out.println("結果2" + isValid("2024-06-06 12:12:12", "yyyy-MM-dd HH:mm:ss"));
System.out.println("結果3" + isValid("2024-06-06 12:12", "yyyy-MM-dd"));
}
public static boolean isValid(String dateStr,String dateFormat) {
final DateFormat sdf = new SimpleDateFormat(dateFormat);
sdf.setLenient(false);
try {
Date parse = sdf.parse(dateStr);
} catch (ParseException e) {
return false;
}
return true;
}
}測試結果:
結果1false
結果2true
結果3true
結果分析:
- 2024-13-06 12:12 中 13月是不存在的,因此校驗出來是 false,沒有問題。
- 2024-06-06 12:12:12 校驗結果為 true 沒有問題。
- 2024-06-06 12:12 校驗結果也是 true,這個結果就有待商榷了,我們要的是 yyyy-MM-dd 格式的,而實際的時間是帶了時、分的,其校驗結果也是 true,如果要強校驗格式這里就有點問題了。
方法二:
public class DateValidUtil {
public static void main(String[] args) {
System.out.println("結果1"+isValidDate("2024-06-06 12:12","yyyy-MM-dd"));
System.out.println("結果2"+isValidDate("2024-06-06 12:12:12","yyyy-MM-dd HH:mm:ss"));
}
public static boolean isValidDate(String dateStr, String pattern) {
try {
LocalDate parse = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
System.out.println("轉換結果"+parse);
} catch (Exception e) {
return false;
}
return true;
}
}測試結果:
結果1false
結果2true
結果3false
結果分析:
- 2024-13-06 12:12 中 13月是不存在的,因此校驗出來是 false,沒有問題。
- 2024-06-06 12:12:12 校驗結果為 true 沒有問題。
- 2024-06-06 12:12 校驗結果也是 false,沒有問題,因為我們要的是 yyyy-MM-dd 格式的,而實際的時間是帶了時、分的,其校驗結果也是 false,沒有問題。
總結:對比兩種校驗方法,很明顯使用 LocalDate 來校驗更為嚴謹,如果你已經使用了 JDK8 及以上的版本,建議使用 LocalDate 來對日期格式進行校驗。
到此這篇關于Java 中常校驗時間格式的方法的文章就介紹到這了,更多相關Java 校驗時間格式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
一不小心就讓Java開發(fā)踩坑的fail-fast是個什么鬼?(推薦)
這篇文章主要介紹了Java fail-fast,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04
SpringBoot+Spring Security無法實現跨域的解決方案
這篇文章主要介紹了SpringBoot+Spring Security無法實現跨域的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Apache?Commons?Config管理配置文件核心功能使用
這篇文章主要為大家介紹了Apache?Commons?Config管理和使用配置文件核心深入探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12

