第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我想編寫一段代碼來使用 java 驗證不同類型的日期,但帶有 T 和 Z 的日期仍然顯示無效

我想編寫一段代碼來使用 java 驗證不同類型的日期,但帶有 T 和 Z 的日期仍然顯示無效

幕布斯7119047 2023-07-28 10:45:16
這是我寫的代碼如果有人嘗試過類似的事情,請建議我。private static final String[] Date_Reg_Ex = {        "yyyy-MM", "yyyy-MM-dd", "dd-MMMM-yyyy", "dd-MM-yyyy", "MM-dd-yyyy", "dd-MM-yyyy HH:mm:ss/SSS",        "yyyy-MM-dd HH:mm", "yyyy-mm-dd'T'HH:MM:ss", "yyyy-MM-dd'T'HH:mm:ss.SSS",        "yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm:ss.S", "yyyy-MM-dd'@'HH:mm:ss",        "yyyy-MM-dd'/'K:mm a", "MM-dd-yyyy hh:mm a", "MM-dd-yyyy hh:mm:ss a", "hh:mm:ss MMM d, yyyy z",        "EEEE dd/MM/yyyy", "EEE, dd MMM yyyy HH:mm:ss zzz", "EEE MMM dd hh:mm:ss z yyyy", "dd MMMMM yyyy",        "MM/dd/yyyy HH:mm", "MM/YYYY", "MM/YY", "dd/MM/yyyy", "yyyy/MM/dd", "MMM, dd/yyyy", "dd.MM.yyyy", "MMM. dd",        "yyyy", "yyyyMMdd", "MMddyyyy", "MMMM yyyy", "ddMMyyyyHHmmss", "yyyy"};public static boolean isValidDate(String value, TimeZone timeZone) {    DateValidator dateValidator = DateValidator.getInstance();    for (String dateRegEx : Date_Reg_Ex) {        if (dateValidator.isValid(value, dateRegEx)) {            return true;        }    }    return false;}
查看完整描述

4 回答

?
RISEBY

TA貢獻1856條經(jīng)驗 獲得超5個贊

我為此使用了SimpleDateFormat而不是任何外部庫,您可以通過簡單地解析日期并檢查異常來驗證日期 -


我想你可以使用這樣的東西 -


private static final String[] DATEFORMATS = {"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'","yyyy-MM-dd'T'HH:mm:ss'Z'",

        "dd-MM-yy HH:mm:ss","dd-MMM-yy HH:mm:ss","yyyy-MM-dd","yyyy-MMM-dd","dd-MMM-yyyy","dd-MM-yyyy"};



public static Date parseDate(String date ) {

    SimpleDateFormat sdf = new SimpleDateFormat();

    Date parsedDate = null;

    for(String format : DATEFORMATS) {

        try {

            sdf.applyPattern(format);

            parsedDate = sdf.parse(date);

            break;

        }catch(ParseException e) {

            LOG.debug("parseDate:: Not in format::{} Moving to next ",format);

        }

    }

    return parsedDate;

}


查看完整回答
反對 回復(fù) 2023-07-28
?
手掌心

TA貢獻1942條經(jīng)驗 獲得超3個贊

既然您寫了“帶有 T 和 Z 的日期仍然顯示無效”,我想您的意思是:

  1. “yyyy-mm-dd'T'HH:MM:ss”

  2. “yyyy-MM-dd'T'HH:mm:ss.SSS”

  1. “時:分:秒 MMM d, yyyy z”

  2. “EEE,dd MMM yyyy HH:mm:ss zzz”

  3. “EEE MMM dd hh:mm:ss z yyyy”

我找不到 2、3、4 和 5 的任何問題。然而,日期 1 切換了月份和分鐘,我猜這不是有意的。

以下是對我有用的日期示例:

  1. “yyyy- MM -dd'T'HH: mm :ss”->“2019-09-12T13:21:31”

  2. “yyyy-MM-dd'T'HH:mm:ss.SSS”->“2019-09-12T13:21:31.020”

  3. “hh:mm:ss MMM d, yyyy z”->“太平洋標(biāo)準(zhǔn)時間 2019 年 9 月 12 日 1:21:31”

  4. “EEE,dd MMM yyyy HH:mm:ss zzz”->“2019 年 9 月 12 日星期四 13:21:31 PST”

  5. “EEE MMM dd hh:mm:ss z yyyy”->“2019 年 9 月 12 日星期四 1:21:31 PST”


查看完整回答
反對 回復(fù) 2023-07-28
?
慕萊塢森

TA貢獻1810條經(jīng)驗 獲得超4個贊

它可能與您的本地有關(guān),我測試了 @Aio 的一些示例,并且必須強制特定的默認本地才能使其成功,我還將他的更改應(yīng)用于第 8 個模式:


我使用了 Apache Commons Validator 1.6 版本


private static final String[] Date_Reg_Ex = {

        "yyyy-MM", "yyyy-MM-dd", "dd-MMMM-yyyy", "dd-MM-yyyy", "MM-dd-yyyy", "dd-MM-yyyy HH:mm:ss/SSS",

        "yyyy-MM-dd HH:mm", "yyyy-MM-dd'T'HH:mm:ss" /** This has been updated as suggested by Aio **/, "yyyy-MM-dd'T'HH:mm:ss.SSS",

        "yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm:ss.S", "yyyy-MM-dd'@'HH:mm:ss",

        "yyyy-MM-dd'/'K:mm a", "MM-dd-yyyy hh:mm a", "MM-dd-yyyy hh:mm:ss a", "hh:mm:ss MMM d, yyyy z",

        "EEEE dd/MM/yyyy", "EEE, dd MMM yyyy HH:mm:ss zzz", "EEE MMM dd hh:mm:ss z yyyy", "dd MMMMM yyyy",

        "MM/dd/yyyy HH:mm", "MM/YYYY", "MM/YY", "dd/MM/yyyy", "yyyy/MM/dd", "MMM, dd/yyyy", "dd.MM.yyyy", "MMM. dd",

        "yyyy", "yyyyMMdd", "MMddyyyy", "MMMM yyyy", "ddMMyyyyHHmmss", "yyyy"

};


public static boolean isValidDate(String value, TimeZone timeZone) {

    DateValidator dateValidator = DateValidator.getInstance();

    for (String dateRegEx : Date_Reg_Ex) {

        if (dateValidator.isValid(value, dateRegEx)) {

            return true;

        }

    }

    return false;

}


public static void main(String... args) {

    // without the next line some tests fail

    Locale.setDefault(Locale.US);


    assertTrue("2019-09-12T13:21:31");

    assertTrue("2019-09-12T13:21:31.020");

    assertTrue("1:21:31 Sep 12, 2019 PST");

    assertTrue("Thursday, 12 Sep 2019 13:21:31 PST");

    assertTrue("Thursday Sep 12 1:21:31 PST 2019");

}


private static void assertTrue(String s) {

    if (!isValidDate(s, null)) {

        System.err.println("Not valid: " + s);

    } else {

        System.out.println("Valid: " + s);

    }

}

這給了我:


Valid: 2019-09-12T13:21:31

Valid: 2019-09-12T13:21:31.020

Valid: 1:21:31 Sep 12, 2019 PST

Valid: Thursday, 12 Sep 2019 13:21:31 PST

Valid: Thursday Sep 12 1:21:31 PST 2019


Process finished with exit code 0


查看完整回答
反對 回復(fù) 2023-07-28
?
肥皂起泡泡

TA貢獻1829條經(jīng)驗 獲得超6個贊

我認為 yyyy-mm-dd'T'HH:MM:ss 有拼寫錯誤。

mm 代表分鐘,MM 代表月份,這里應(yīng)該是 yyyy-MM-dd'T'HH:mm:ss。

請嘗試更正一次,我希望您無需任何程序/額外代碼即可獲得所需的結(jié)果。


查看完整回答
反對 回復(fù) 2023-07-28
  • 4 回答
  • 0 關(guān)注
  • 251 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號