コード持つ:SimpleDateFormatバグや誤解パターンと寛大な?
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM d HH:mm yyyy");
で期待通りにこれは動作します:
simpleDateFormat.parse("Mar 27 02:02 2016");
simpleDateFormat.parse("Mar 27 03:02 2016");
しかしsimpleDateFormat.setLenient(false);
はパース( "3月27日午前2時02分2016")が失敗になりますが。 これは私を完全に混乱させる - 私が見ることができる、SDF形式のパターンは正しいですか?それでは、寛大なものが設定されているかどうかは関係ありません。また、私は同じフォーマットで他の多くのランダム(千)のデータストリングを試しました。それは失敗したのは "Mar 27 02:02 2016"のdatestringだけです - 。ここで何が起こっているのですか? ロケールは重要ですが、タイムゾーンが "Europe/Stockholm"(作成されたカレンダーのuseDaylightがtrue)の場合、sv_SEです。
をうまく働いたが、あなたは(夏時間別称)2016年3月27日(日曜日)に開始夏時間を持っていたロケールでいますか? – rgettman
ああ、実際、私は - なぜそれが失敗するのでしょうか? – Beamie
私は米国にいるとき、夏時間が有効になると、1:59:59から3:00:00に直接行きます。 2時は決して存在しなかった。 SimpleDateFormatの簡略化は、4月31日のようなものを5月1日と4月の32日に5月2日に回すことを意味します。 – rgettman