Java驗(yàn)證日期時(shí)間字符串是否合法的三種方式
第一種,JDK8之前用SimpleDateFormat類
可以使用SimpleDateFormat類來(lái)驗(yàn)證日期時(shí)間的格式和有效性。
首先,可以創(chuàng)建SimpleDateFormat對(duì)象,然后使用該對(duì)象的parse()方法來(lái)驗(yàn)證日期時(shí)間字符串的格式和有效性。如果該方法拋出異常,則表示日期時(shí)間字符串不符合指定的格式,而如果該方法成功返回Date對(duì)象,則表示日期時(shí)間字符串符合指定的格式。
例如,以下代碼片段展示了如何使用SimpleDateFormat類來(lái)驗(yàn)證日期時(shí)間字符串的格式和有效性:
// 創(chuàng)建SimpleDateFormat對(duì)象,指定日期時(shí)間格式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 待驗(yàn)證的日期時(shí)間字符串 String dateTimeString = "2021-06-30 12:34:56"; try { // 將日期時(shí)間字符串轉(zhuǎn)化為Date對(duì)象 Date dateTime = dateFormat.parse(dateTimeString); // 驗(yàn)證日期時(shí)間字符串的格式和有效性成功 System.out.println("日期時(shí)間字符串格式和有效性驗(yàn)證通過"); } catch (ParseException e) { // 驗(yàn)證日期時(shí)間字符串的格式和有效性失敗 System.err.println("日期時(shí)間字符串格式和有效性驗(yàn)證失敗:" + e.getMessage()); }
在上述代碼中,首先創(chuàng)建了一個(gè)SimpleDateFormat對(duì)象,指定日期時(shí)間格式為"yyyy-MM-dd HH:mm:ss"。然后,使用該對(duì)象的parse()方法將待驗(yàn)證的日期時(shí)間字符串轉(zhuǎn)化為Date對(duì)象,如果轉(zhuǎn)化成功,則表示該日期時(shí)間字符串符合指定的格式和有效性,否則將拋出ParseException異常。
第二種,JDK8之后用DateTimeFormatter類
在Java中,可以使用DateTimeFormatter類的ofPattern方法來(lái)創(chuàng)建一個(gè)日期時(shí)間格式化對(duì)象。然后,使用該對(duì)象的parse方法來(lái)驗(yàn)證一個(gè)字符串是否符合指定的日期時(shí)間格式。
以下是一個(gè)示例代碼,演示如何使用DateTimeFormatter來(lái)驗(yàn)證一個(gè)字符串是否符合指定的日期時(shí)間格式:
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; public class DateTimeFormatValidator { public static void main(String[] args) { String userInput = "2021-08-31 10:30:00"; String pattern = "yyyy-MM-dd HH:mm:ss"; try { // 創(chuàng)建日期時(shí)間格式化對(duì)象 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern); // 將用戶輸入的字符串解析為L(zhǎng)ocalDateTime對(duì)象 LocalDateTime dateTime = LocalDateTime.parse(userInput, formatter); // 打印解析后的日期時(shí)間 System.out.println(dateTime); } catch (DateTimeParseException e) { // 解析失敗,說明輸入的字符串不符合指定的日期時(shí)間格式 System.out.println("Invalid date/time format: " + userInput); } } }
該示例代碼中,先定義了一個(gè)用戶輸入的字符串和一個(gè)日期時(shí)間格式化模板,然后創(chuàng)建了一個(gè)DateTimeFormatter對(duì)象,使用ofPattern方法指定日期時(shí)間格式。
接著,使用DateTimeFormatter對(duì)象的parse方法將用戶輸入的字符串轉(zhuǎn)換為L(zhǎng)ocalDateTime對(duì)象。如果字符串不符合指定的日期時(shí)間格式,則會(huì)拋出DateTimeParseException異常,這時(shí)就可以判斷用戶輸入的日期時(shí)間格式是否正確。
最后,如果轉(zhuǎn)換成功,可以打印解析后的日期時(shí)間。
第三種,用正則表達(dá)式
可以使用java.util.regex包中的Pattern和Matcher類來(lái)實(shí)現(xiàn)。
以下是一個(gè)示例代碼,可以驗(yàn)證日期格式為yyyy-MM-dd,時(shí)間格式為HH:mm:ss:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class DateTimeValidator { private static final String DATE_PATTERN = "yyyy-MM-dd"; private static final String TIME_PATTERN = "HH:mm:ss"; public static boolean isValidDate(String date) { return isValidFormat(DATE_PATTERN, date); } public static boolean isValidTime(String time) { return isValidFormat(TIME_PATTERN, time); } private static boolean isValidFormat(String pattern, String value) { boolean isValid = false; Pattern regexPattern = Pattern.compile(pattern); Matcher matcher = regexPattern.matcher(value); if (matcher.matches()) { isValid = true; } return isValid; } }
使用示例:
boolean isDateValid = DateTimeValidator.isValidDate("2021-12-31"); // true boolean isTimeValid = DateTimeValidator.isValidTime("23:59:59"); // true
需要注意的是,這個(gè)代碼只能驗(yàn)證日期時(shí)間格式是否正確,而不能驗(yàn)證具體的日期時(shí)間是否合法,例如無(wú)效的日期時(shí)間如2021-02-29 23:59:59。如果需要驗(yàn)證具體的日期時(shí)間是否合法,需要使用更加復(fù)雜的邏輯來(lái)進(jìn)行判斷。
總結(jié)
到此這篇關(guān)于Java驗(yàn)證日期時(shí)間字符串是否合法的三種方式的文章就介紹到這了,更多相關(guān)Java驗(yàn)證日期時(shí)間字符串合法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot實(shí)現(xiàn)動(dòng)態(tài)控制定時(shí)任務(wù)支持多參數(shù)功能
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)動(dòng)態(tài)控制定時(shí)任務(wù)-支持多參數(shù)功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05Java文件上傳與文件下載實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Java文件上傳與文件下載實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Java文件上傳與文件下載相關(guān)操作原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-02-02深入淺出分析Java抽象類和接口【功能,定義,用法,區(qū)別】
這篇文章主要介紹了Java抽象類和接口,結(jié)合實(shí)例形式深入淺出的分析了java抽象類與接口的功能功能,定義,用法及區(qū)別,需要的朋友可以參考下2017-08-08RestTemplate接口調(diào)用神器常見用法匯總
這篇文章主要介紹了RestTemplate接口調(diào)用神器常見用法匯總,通過案例代碼詳細(xì)介紹RestTemplate接口調(diào)用神器常見用法,需要的朋友可以參考下2022-07-07Java編程實(shí)現(xiàn)beta分布的采樣或抽樣實(shí)例代碼
這篇文章主要介紹了Java編程實(shí)現(xiàn)beta分布的采樣或抽樣實(shí)例,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01SpringBoot打包發(fā)布到linux上(centos 7)的步驟
這篇文章主要介紹了SpringBoot打包發(fā)布到linux上(centos 7)的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-12-12