SimpleDateFormat が YYYY-MM-dd HH:mm 文字列に対して間違った日付時刻を生成する
問題:
SimpleDateFormat を使用して「YYYY-MM-dd HH:mm」形式の文字列を解析すると、予期しない日付が返されます。
例:
<code class="java">Date newDate = null; String dateTime = "2013-03-18 08:30"; SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd HH:mm", Locale.ENGLISH); df.setLenient(false); try { newDate = df.parse(dateTime); } catch (ParseException e) { throw new InvalidInputException("Invalid date input."); }</code>
実際の結果:
Sun Dec 30 08:30:00 EST 2012
期待される結果:
2013-03-18 08:30:00
解決策:
問題は SimpleDateFormat パターン文字列にあります。年の形式指定子は、「YYYY」ではなく「yyyy」である必要があります。
修正コード:
<code class="java">SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);</code>
この変更により、年が確実に解析されるようになります。予期される形式「YYYY-MM-dd HH:mm」に合わせた 4 桁の年。
以上がSimpleDateFormat が「YYYY-MM-dd HH:mm」文字列に対して間違った日付を生成するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。