1

文字列を日付に解析する必要がありますが、文字列がどのパターンになるかを事前に知りません。これは、形式を知らずに文字列を日付に変換する方法の質問に似ています。.

これを解決するために、いくつかのパターンを採用して結果をテストしました。しかし、私が得ているのは少し奇妙です。

例 1:

    import java.util.Date;
    import org.apache.commons.lang3.time.DateUtils;

    public Date extractDate(String dateStr) {

        String [] datePatterns = {"yyyy-MM-dd", "dd-MM-yyyy"};
        Date date = null;

        try {
            date = DateUtils.parseDate(dateStr, datePatterns);
        }
        catch (Exception except) {
                except.printStackTrace();
        }
        return date;
    }



    public static void main(String[] args) throws Exception {
        System.out.println ("2013-09-30:" + extractDate("2013-09-30") );
        System.out.println ("30-09-2013:" + extractDate("30-09-2013") );

    }

これは与える:

    2013-10-30:Wed Oct 30 00:00:00 EAT 2013
    30-09-2013:Mon Mar 05 00:00:00 EAT 36

「30-09-2013」を解析した結果は明らかに奇妙です。

例 2: ここではパターンのみを切り替えます

        String [] datePatterns = {"dd-MM-yyyy", "yyyy-MM-dd"};

これは与える:

    2013-10-30:Mon Mar 05 00:00:00 EAT 36
    30-09-2013:Mon Sep 30 00:00:00 EAT 2013

例 2 では、'2013-10-30' を解析した結果が奇妙です。

結果の日付が正しいように、さまざまな形式/パターンを使用して日付文字列を解析するにはどうすればよいですか?

4

2 に答える 2

0

私の答えは同じです。形式に関する事前の知識がなければ、日付を解析できません。

日付を書く例はほとんどありません: DD-MM-YYYY, MM-DD-YYYY, DD/MM/YYYY, MM/DD/YYYY, MM/DD/YY. DD/MM/YYこれらの多くの種類の日付についてのみ、共通のパターンを見つけることができますか?

いいえ!ユーザーが入力した形式を知らなければ、それを解析することはできません。

パターン マッチングを思いついた場合は、フォーマットとフォーマットにも10-09-2010一致する日付などを指定します。ここで問題が発生しますMM-DD-YYYYDD-MM-YYYY

于 2013-10-09T10:55:16.760 に答える