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)證通過(guò)");
} 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) {
// 解析失敗,說(shuō)明輸入的字符串不符合指定的日期時(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ù)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
Java文件上傳與文件下載實(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-08
RestTemplate接口調(diào)用神器常見用法匯總
這篇文章主要介紹了RestTemplate接口調(diào)用神器常見用法匯總,通過(guò)案例代碼詳細(xì)介紹RestTemplate接口調(diào)用神器常見用法,需要的朋友可以參考下2022-07-07
Java編程實(shí)現(xiàn)beta分布的采樣或抽樣實(shí)例代碼
這篇文章主要介紹了Java編程實(shí)現(xiàn)beta分布的采樣或抽樣實(shí)例,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
SpringBoot打包發(fā)布到linux上(centos 7)的步驟
這篇文章主要介紹了SpringBoot打包發(fā)布到linux上(centos 7)的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-12-12

