日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了如何使用Time API檢查字符串是否與日期模式匹配?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我的程序正在將輸入字符串解析為LocalDate對象。在大多數情況下,字符串看起來像30.03.2014,但偶爾看起來像3/30/2014。根據具體情況,我需要使用不同的模式來調用DateTimeFormatter.ofPattern(String pattern)。基本上,在進行解析之前,我需要檢查字符串是否與模式dd.MM.yyyyM/dd/yyyy匹配。

正則表達式方法類似于:

LocalDate date;
if (dateString.matches("^\d?\d/\d{2}/\d{4}$")) {
  date = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("M/dd/yyyy"));  
} else {
  date = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("dd.MM.yyyy"));  
}

這是可行的,但在匹配字符串時最好也使用日期模式字符串。

有沒有使用新的Java 8 Time API而不求助于正則表達式匹配來實現這一點的標準方法?我已在文檔中查找DateTimeFormatter,但未找到任何內容。

推薦答案

好的,我會繼續并將其作為答案發布。一種方法是創建將保存模式的類。

public class Test {
    public static void main(String[] args){
        MyFormatter format = new MyFormatter("dd.MM.yyyy", "M/dd/yyyy");
        LocalDate  date = format.parse("3/30/2014"); //2014-03-30
        LocalDate  date2 = format.parse("30.03.2014"); //2014-03-30
    }
}

class MyFormatter {
    private final String[] patterns;

    public MyFormatter(String... patterns){
        this.patterns = patterns;
    }

    public LocalDate parse(String text){
        for(int i = 0; i < patterns.length; i++){
            try{
                return LocalDate.parse(text, DateTimeFormatter.ofPattern(patterns[i]));
            }catch(DateTimeParseException excep){}
        }
        throw new IllegalArgumentException("Not able to parse the date for all patterns given");
    }
}

您可以像@MenoHochschild那樣改進這一點,方法是從您傳入的String數組直接創建DateTimeFormatter數組。


另一種方法是使用DateTimeFormatterBuilder,附加您想要的格式。可能還有其他方法,我沒有深入閱讀文檔:-)

DateTimeFormatter dfs = new DateTimeFormatterBuilder()
                           .appendOptional(DateTimeFormatter.ofPattern("yyyy-MM-dd"))                                                                 
                           .appendOptional(DateTimeFormatter.ofPattern("dd.MM.yyyy"))                                                                                     
                           .toFormatter();
LocalDate d = LocalDate.parse("2014-05-14", dfs); //2014-05-14
LocalDate d2 = LocalDate.parse("14.05.2014", dfs); //2014-05-14

這篇關于如何使用Time API檢查字符串是否與日期模式匹配?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:API 匹配 如何使用 字符串 日期 檢查 模式
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定