SimpleDateFormat が「YYYY-MM-dd HH:mm」を誤って解析する
「YYYY-MM」形式の文字列を解析しようとすると-dd HH:mm" を日付に指定すると、一部の開発者は予期しない日付結果に遭遇します。この問題は、lenient 設定を false に設定して SimpleDateFormat クラスを使用すると発生します。
次のコード スニペットは、この問題を示しています。
<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 (wrong)
この問題を解決するには、SimpleDateFormat パターンで指定されている年の形式が大文字の "YYYY" ではなく小文字の "yyyy" であることを確認します。
<code class="java">SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);</code>
この調整を行うことで、コードは「YYYY-MM-dd HH:mm」文字列が正しく表示されます。詳細については、SimpleDateFormat のドキュメントを参照してください。
以上がSimpleDateFormat が「YYYY-MM-dd HH:mm」を誤って解析するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。