1

日付文字列をいじらずにJavaでさまざまなタイプの日付を解析する簡単な方法はありますか?

6 種類の日付を処理する必要があります。

  • 2013 年 5 月 16 日 19:27:12 CEST
  • 2013 年 5 月 14 日 (火) 13:15:00 +0200
  • 2013-05-20T12:01:57Z
  • 2012/11/13 15:30:00
  • 2013.11.11
  • 1970-01-01T00:00:00.000Z

日付がサーバーからどちらの形式で届くかはわかりません...

ありがとう!

4

5 に答える 5

4

すべてのフォーマットを反復して解析を試み、例外を無視できます。適合する形式がない場合は、例外をスローします。

同様の答え

于 2013-05-20T12:22:40.480 に答える
1

このような異なる日付形式を処理する実際の「簡単な」方法はないと思います。「標準の日付形式」をサーバーに釘付けにするオプションがあれば、それが簡単な方法です。

一般的なアプローチは、対処しなければならないすべての「奇妙な」日付形式に対して DateParser を構築することです。Joda Time を使用した最初のデートの例を次に示します。

String date1 = "16 May 2013 19:27:12 CEST";
        DateTimeFormatter fmt = new DateTimeFormatterBuilder()
            .appendDayOfMonth(2)
            .appendLiteral(' ')
            .appendMonthOfYearShortText()
            .appendLiteral(' ')
            .appendYear(4, 4)
            .appendLiteral(' ')
            .appendHourOfDay(2)
            .appendLiteral(":")
            .appendMinuteOfDay(2)
            .appendLiteral(":")
            .appendSecondOfDay(2)
            .appendLiteral(' ')
            .appendLiteral("CEST")
            .toFormatter();

        DateTime parseDateTime = fmt.parseDateTime(date1);

        System.out.println(parseDateTime);

これが、他のケースで DateParser を構築するのに役立つことを願っています。そして覚えておいてください - 常にUTCに関連して日付を保存してください!

于 2013-05-20T13:04:33.810 に答える
1

ストックの「Joda-Time を使用する」の回答を詳しく説明するには、Joda-TimeDateTimeParserで 6 つのフォーマットのそれぞれに対して を作成し、それらを単一の に追加しますDateTimeFormatter

この質問に対する受け入れられた回答を参照してください: Using Joda Date & Time API to parse multiple formats

于 2013-05-20T13:14:12.903 に答える
1

標準 API に代わる最もよく知られているのは Joda-Time です。また、JSR 310 は Java SE 7 の改良された日付/時刻 API です。

于 2013-05-20T12:31:39.773 に答える
0

サンプル コードは次のとおりです。2001-07-04T12:08:56.235-0700 のような日付文字列の場合、次の形式「yyyy-MM-dd'T'HH:mm:ss.SSSZ」を使用する必要があります。

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date date = simpleDateFormat.parse("2001-07-04T12:08:56.235-0700");
System.out.println(date);

詳細は以下のリンクで入手できます

SimpleDateFormat

于 2013-05-20T12:38:39.643 に答える