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