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