最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java驗(yàn)證日期時(shí)間字符串是否合法的三種方式

 更新時(shí)間:2023年11月16日 09:29:43   作者:工地少年與code  
判斷日期經(jīng)常合法出現(xiàn)在IO場(chǎng)景下,下面將盡量使用簡(jiǎn)練的思路和代碼呈現(xiàn)給大伙,這篇文章主要給大家介紹了關(guān)于Java驗(yàn)證日期時(shí)間字符串是否合法的三種方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

第一種,JDK8之前用SimpleDateFormat類(lèi)

可以使用SimpleDateFormat類(lèi)來(lái)驗(yàn)證日期時(shí)間的格式和有效性。

首先,可以創(chuàng)建SimpleDateFormat對(duì)象,然后使用該對(duì)象的parse()方法來(lái)驗(yàn)證日期時(shí)間字符串的格式和有效性。如果該方法拋出異常,則表示日期時(shí)間字符串不符合指定的格式,而如果該方法成功返回Date對(duì)象,則表示日期時(shí)間字符串符合指定的格式。

例如,以下代碼片段展示了如何使用SimpleDateFormat類(lèi)來(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類(lèi)

在Java中,可以使用DateTimeFormatter類(lèi)的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);
            // 將用戶(hù)輸入的字符串解析為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è)用戶(hù)輸入的字符串和一個(gè)日期時(shí)間格式化模板,然后創(chuàng)建了一個(gè)DateTimeFormatter對(duì)象,使用ofPattern方法指定日期時(shí)間格式。

接著,使用DateTimeFormatter對(duì)象的parse方法將用戶(hù)輸入的字符串轉(zhuǎn)換為L(zhǎng)ocalDateTime對(duì)象。如果字符串不符合指定的日期時(shí)間格式,則會(huì)拋出DateTimeParseException異常,這時(shí)就可以判斷用戶(hù)輸入的日期時(shí)間格式是否正確。

最后,如果轉(zhuǎn)換成功,可以打印解析后的日期時(shí)間。

第三種,用正則表達(dá)式

可以使用java.util.regex包中的Pattern和Matcher類(lèi)來(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)文章

  • 如何使用Maven管理項(xiàng)目?Maven管理項(xiàng)目實(shí)例

    如何使用Maven管理項(xiàng)目?Maven管理項(xiàng)目實(shí)例

    下面小編就為大家?guī)?lái)一篇如何使用Maven管理項(xiàng)目?Maven管理項(xiàng)目實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Java Volatile關(guān)鍵字同步機(jī)制詳解

    Java Volatile關(guān)鍵字同步機(jī)制詳解

    這篇文章主要介紹了Java Volatile關(guān)鍵字同步機(jī)制詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • java遞歸設(shè)置層級(jí)菜單的實(shí)現(xiàn)

    java遞歸設(shè)置層級(jí)菜單的實(shí)現(xiàn)

    本文主要介紹了java遞歸設(shè)置層級(jí)菜單的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • springboot war包部署過(guò)程詳解

    springboot war包部署過(guò)程詳解

    這篇文章主要為大家介紹了springboot war包部署過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • JVM的垃圾回收算法一起來(lái)看看

    JVM的垃圾回收算法一起來(lái)看看

    這篇文章主要為大家詳細(xì)介紹了JVM的垃圾回收算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • Java創(chuàng)建多線(xiàn)程局域網(wǎng)聊天室實(shí)例

    Java創(chuàng)建多線(xiàn)程局域網(wǎng)聊天室實(shí)例

    這篇文章主要介紹了Java創(chuàng)建多線(xiàn)程局域網(wǎng)聊天室實(shí)例,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • MyBatis中批量插入的三個(gè)關(guān)鍵優(yōu)化技巧與避坑指南

    MyBatis中批量插入的三個(gè)關(guān)鍵優(yōu)化技巧與避坑指南

    這篇文章主要為大家詳細(xì)介紹了MyBatis中批量插入的三個(gè)關(guān)鍵優(yōu)化技巧與避坑指南,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2026-01-01
  • Spring Boot自定義favicon實(shí)現(xiàn)方法實(shí)例解析

    Spring Boot自定義favicon實(shí)現(xiàn)方法實(shí)例解析

    這篇文章主要介紹了Spring Boot自定義favicon實(shí)現(xiàn)方法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java和C++通過(guò)new創(chuàng)建的對(duì)象有何區(qū)別?

    Java和C++通過(guò)new創(chuàng)建的對(duì)象有何區(qū)別?

    Java和C++都是面向?qū)ο蟮木幊陶Z(yǔ)言,然而Java和C++在創(chuàng)建對(duì)象時(shí)卻存在不同的方式,由于方式的不同導(dǎo)致在內(nèi)存中管理的不同。這篇文章主要給大家介紹了關(guān)于Java和C++通過(guò)new創(chuàng)建對(duì)象區(qū)別的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-11-11
  • Java8新特性Stream的完全使用指南

    Java8新特性Stream的完全使用指南

    這篇文章主要給大家介紹了關(guān)于Java8新特性Stream的完全使用指南,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java8具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05

最新評(píng)論

新平| 丰镇市| 黑水县| 塔河县| 宜宾市| 乡城县| 三亚市| 邳州市| 上犹县| 峨眉山市| 刚察县| 侯马市| 楚雄市| 乌兰县| 巫山县| 淮滨县| 西城区| 新田县| 长春市| 吉水县| 江油市| 无棣县| 和硕县| 民和| 东莞市| 时尚| 五大连池市| 开封县| 隆化县| 海兴县| 永宁县| 凤冈县| 拜泉县| 刚察县| 普格县| 渑池县| 井研县| 金门县| 锡林浩特市| 通州市| 黔西|