ホームページ >Java >&#&チュートリアル >SimpleDateFormat が日付の解析に失敗するのはなぜですか? Locale と DateTimeFormatter を使用して修正するにはどうすればよいですか?
問題:
日付の解析 - SimpleDateFormat を使用した時刻文字列が特定のデバイスで失敗し、「解析不能」というエラーが発生します。 date" エラー。
分析:
SimpleDateFormat では、日付解析の言語と文化的規則を指定するために Locale パラメーターが必要です。ロケールが指定されていない場合は、システムのデフォルトのロケールが使用されます。これにより、ロケール設定が異なるデバイスで解析の不一致が生じる可能性があります。
解決策:
詳細な説明:
指定された日付-time 文字列 (「2016 年 10 月 24 日 7:31 pm」) は英語です。ただし、システムのデフォルトのロケールが英語でない場合 (フランス語の電話の場合など)、デフォルトの SimpleDateFormat インスタンスは解析に失敗します。
Java 8 (DateTimeFormatter):
Java 8 では、明示的なロケールを指定して DateTimeFormatter を使用してカスタム日時を解析します文字列。ロケールを受け入れない事前定義されたフォーマッタの使用は避けてください。例:
DateTimeFormatter dtf = new DateTimeFormatterBuilder() .parseCaseInsensitive() .appendPattern("d MMM uuuu h:m a") .toFormatter(Locale.ENGLISH); LocalDateTime ldt = LocalDateTime.parse(strDateTime, dtf);
Java 6/7 (ThreeTen-Backport):
Java 6 または Java 7 で行き詰まった場合は、ThreeTen-Backport を使用してバックポートします。 DateTimeFormatter 機能。
追加注:
以上がSimpleDateFormat が日付の解析に失敗するのはなぜですか? Locale と DateTimeFormatter を使用して修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。