7

これに関していくつかの質問があることは承知しています。しかし、特定の日付パターンに問題があります。次に例を示します。

20130401100000[-03:EST]

-03ドキュメントによると、SimpleDateFormat4桁である必要があるため、問題が発生しています。私がそれに最も近いパターンはこれでした:

yyyyMMddHHmmss'['Z':'z']'

しかし、2桁なので、うまくいきません。テストに使用しているコードサンプルは次のとおりです。

public static void main(String[] args) throws ParseException {
    String input = "20130401100000[-03:EST]";

    DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss'['Z':'z']'");
    df.setTimeZone(TimeZone.getTimeZone("GMT"));    

    System.out.println(df.format(new Date()));
    System.out.println(df.parse(input));
}

を印刷すると、次のnew Date()ようになります。

20130528155734[+0000:GMT]

しかし、解析しようとするとinput、次の例外が発生します。

Exception in thread "main" java.text.ParseException: Unparseable date: "20130401100000[-03:EST]"
at java.text.DateFormat.parse(DateFormat.java:337)
at Teste.main(Teste.java:17)

を正しい で解析inputする方法を知っている人はいますか?DateTimeZone

4

2 に答える 2

0

JDK 7 は、 SimpleDateFormatの新しいパターンをサポートします

特に、X 文字は ISO 8601 タイム ゾーンのサポートを追加します。

JDK 7 でこのパターンを試す

DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss'['X':'z']'");

JDK 7 では、次の出力が得られました。

20130602140935[Z:GMT] 2013 年 4 月 1 日月曜日 13:00:00 GMT

于 2013-05-29T03:41:02.613 に答える