ホームページ >Java >&#&チュートリアル >SimpleDateFormat が「解析できない日付」をスローするのはなぜですか?

SimpleDateFormat が「解析できない日付」をスローするのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-01 02:22:09304ブラウズ

Why Does SimpleDateFormat Throw

SimpleDateFormat で解析できない日付: ロケールを指定するか、DateTimeFormatter を使用する

問題:
SimpleDateFormat を使用する場合日付を解析しようとすると、エラーが発生する可能性があります「java.text.ParseException: 解析できない日付」、特にロケールが指定されていない場合。

説明:
SimpleDateFormat では、日付を正しく解析するためにロケールが必要です。何も指定されていない場合は、システムのデフォルトのロケールが使用され、解析される形式と一致しない可能性があります。

常にlocale:
    Locale 引数を受け入れる SimpleDateFormat のコンストラクター オーバーロードを使用します。例:
SimpleDateFormat dtfmt = new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.ENGLISH);
最新の DateTimeFormatter API を使用します。
  1. DateTimeFormatter は、書式設定と日付と時刻を解析します。
    これにより、柔軟性が向上し、ロケールを指定する機能など、書式設定の制御。
  • DateTimeFormatter を使用したデモ:

注:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "24 Oct 2016 7:31 pm";
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("d MMM uuuu h:m a").withLocale(Locale.ENGLISH);
        LocalDateTime ldt = LocalDateTime.parse(strDateTime, dtf);
        System.out.println(ldt); // prints 2016-10-24T19:31
    }
}

デフォルトDateTimeFormatter で指定された locale
    は、システムの現在のロケールを使用します。
  • 潜在的な解析の問題を避けるために、常にロケール
  • を明示的に指定します。

以上がSimpleDateFormat が「解析できない日付」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。