9

日時文字列を解析しようとしていますが、解析SimpleDateFormat.parse()不能な日付の例外が引き続き発生します。

解析しようとしている日付形式は次のとおりです。2011-10-06T12:00:00-08:00

私が使用しているコードは次のとおりです。

try {
    String dateStr = "2011-10-06T12:00:00-08:00";
    SimpleDateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
    SimpleDateFormat dateFormatter = new SimpleDateFormat("MMM d, yyyy");
    Date date = dateParser.parse(dateStr);
    System.out.println(dateFormatter.format(date));         
} catch(Exception e) {
    System.out.println(e.getMessage());
}

このエラーを返します:java.text.ParseException: Unparseable date: "2011-10-06T12:00:00-08:00"

私が知る限り、これは SimpleDateFormat クラスを使用する正しい方法ですが、私は Java に堪能ではないため、間違っている可能性があります。私の問題が何であるか知っている人はいますか?

4

8 に答える 8

17

タイムゾーンは GMT-08:00 または -0800 である必要があります (Madcore Tom が言ったように)。Java ドキュメントを参照してください。

Java 7 では、「yyyy-MM-dd'T'HH:mm:ssX」を使用できます。

于 2011-10-07T00:06:43.663 に答える
15

SimpleDateFormat はタイムゾーンにコロンが含まれている場合 (-08:00) は解析しないと思います。日付を解析できるはずです2011-10-06T12:00:00-0800

簡単な文字列操作でコロンを取り除くことができます。

于 2011-10-06T23:58:51.653 に答える
1
于 2018-02-03T05:31:24.057 に答える
0

試してみてください

SimpleDateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz");
于 2011-10-06T23:58:03.247 に答える
-1

この種のことにはJodaTimeを使用することを強くお勧めします。

ISO 日付形式を解析しようとしていますが、Joda はそれを「すぐに」実行し、他の多くの利点も提供します。

私はずっと前に、標準の JDK データ クラスに役立つことをさせようとするのをあきらめました。

于 2011-10-07T00:13:22.293 に答える