8

このコードが解析不能な日付の例外をスローするのはなぜですか?

SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.000Z'");
f.setLenient(false);
String dateStr = "2012-03-11T02:46:01.000Z";
f.parse(dateStr);

lenient が true の場合は正常に動作します。入力日付 ' 2012-03-01T02:46:01.000Z ' に対して、寛大な false を使用しても奇妙に機能します。使用されているデフォルトのタイムゾーン: PST

4

1 に答える 1

10

その時間はデフォルトのタイム ゾーンには存在しないため、夏時間の変更日であり、時間が午前 2:00 から午前 3:00 にジャンプしたため、その朝の 2:46 はありませんでした。:P

UTC を解析してSimpleDateFormatいるので、次のようにインスタンスのタイム ゾーンを UTCに設定します。

f.setTimeZone(TimeZone.getTimeZone("UTC"));

そしてあなたの問題はなくなります。

于 2013-01-29T01:38:06.993 に答える