25

この形式の日付文字列2013-03-13T20:59:31+0000を Date オブジェクトに解析する方法は?

私はこの方法で試していますが、うまくいきません。

DateFormat df = new SimpleDateFormat("YYYY-MM-DDThh:mm:ssTZD");
Date result =  df.parse(time);
                    

最初の行からこの例外が発生します。

java.lang.IllegalArgumentException: 不正なパターン文字 'T'

4

7 に答える 7

47

試す:

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

http://developer.android.com/reference/java/text/SimpleDateFormat.htmlを確認してください

具体的には:

                 yyyy-MM-dd 1969-12-31
                 yyyy-MM-dd 1970-01-01
           yyyy-MM-dd HH:mm 1969-12-31 16:00
           yyyy-MM-dd HH:mm 1970-01-01 00:00
          yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
          yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
   yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
   yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
 yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
 yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000
于 2013-03-15T13:12:35.897 に答える
44

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");

年は小文字のyです。日付に関連しない入力内の文字(の「T」など)は、2013-03-13T20:59:31+0000で引用符で囲む必要があります''

定義されたパターン文字のリストについては、ドキュメントを参照してください

解析は、指定された日付が指定された形式であることを確認します。チェック後に特定の形式で日付を印刷するには、以下を参照してください。

DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
Date result;
try {
    result = df.parse("2013-03-13T20:59:31+0000");
    System.out.println("date:"+result); //prints date in current locale
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println(sdf.format(result)); //prints date in the format sdf
}
于 2013-03-15T13:16:01.837 に答える
3

これを試してください:

SimpleDateFormat formatDate;
formatDate= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
于 2013-03-15T13:13:07.403 に答える
3

java.time

ZonedDateTime.parse("2020-05-08T11:12:13+0001", DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ"))

私は最新の Java 日付と時刻 API である java.time とそのZonedDateTimeクラスを使用しています。AZonedDateTimeはタイムゾーン付きの日付と時刻です。Android Oreo (API レベル 26) より前の java.time を使用する場合は、コア ライブラリの desugaringが必要です。

Tフォーマッタがパターン文字ではないことを認識できるように、一重引用符で囲んでいます。質問のT引用符なしが例外の理由でしたが、フォーマットパターン文字列にも他の問題がありました。yyyy-MM-dd'T'HH:mm:ssZ動作します。

于 2021-02-19T19:29:36.760 に答える