ホームページ >Java >&#&チュートリアル >文字列が Java の特定の日付形式に一致するかどうかを確認するにはどうすればよいですか?

文字列が Java の特定の日付形式に一致するかどうかを確認するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-03 00:31:29705ブラウズ

How Can I Check If a String Matches a Specific Date Format in Java?

Java で必要な日付形式に対する文字列のチェック

概要

指定された文字列が指定された日付形式に従っているかどうかを判断することは、Java の一般的なタスクです。この記事では、正規表現による解決策に頼らずに、この問題に対処するための 2 つの異なるアプローチを紹介します。

アプローチ 1: SimpleDateFormat

SimpleDateFormat クラスは、これを達成する簡単な手段を提供します。実装方法は次のとおりです。

<code class="java">import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {

    public static void main(String[] args) {
        String format = "dd/MM/yyyy";
        String input = "20130925";
        Date date = null;

        try {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            date = sdf.parse(input);
            if (!input.equals(sdf.format(date))) {
                date = null;
            }
        } catch (ParseException ex) {
            // Invalid date format
        }

        boolean isValid = date != null;
        System.out.println("Is valid: " + isValid);
    }
}</code>

このアプローチでは、SimpleDateFormat インスタンスを使用して入力文字列を解析します。解析が成功し、結果の日付が元の文字列と一致する場合、入力は有効であるとみなされます。それ以外の場合、無効とみなされます。

アプローチ 2 (Java 8): 日時 API

Java 8 以降では、日時 API の導入により、より最新で堅牢な API が提供されます。アプローチ:

<code class="java">import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {

    public static void main(String[] args) {
        String format = "dd/MM/yyyy";
        String input = "20130925";
        Locale locale = Locale.ENGLISH;

        boolean isValid = isValidFormat(format, input, locale);
        System.out.println("Is valid: " + isValid);
    }

    public static boolean isValidFormat(String format, String input, Locale locale) {
        LocalDateTime ldt = null;
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format, locale);

        try {
            ldt = LocalDateTime.parse(input, formatter);
            String result = ldt.format(formatter);
            return result.equals(input);
        } catch (DateTimeParseException e) {
            try {
                LocalDate ld = LocalDate.parse(input, formatter);
                String result = ld.format(formatter);
                return result.equals(input);
            } catch (DateTimeParseException ex) {
                try {
                    LocalTime lt = LocalTime.parse(input, formatter);
                    String result = lt.format(formatter);
                    return result.equals(input);
                } catch (DateTimeParseException e2) {
                    // Debugging purposes
                    e2.printStackTrace();
                }
            }
        }

        return false;
    }
}</code>

このソリューションは、Date-Time API の高度な書式設定機能を利用して、より正確なチェックを実行します。日付のみ、時刻のみ、完全な日付と時刻の形式など、さまざまな入力形式の可能性が考慮されています。 isValidFormat メソッドを使用すると、さまざまなロケールに対する柔軟なチェックが可能になります。

結論

これら 2 つのアプローチは、文字列が Java の特定の日付形式に準拠しているかどうかをチェックするための信頼できるソリューションを提供します。どの方法を選択するかは、要件と使用されている Java バージョンによって異なります。

以上が文字列が Java の特定の日付形式に一致するかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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