日付の形式が正しいかどうかを Java で判定する方法

SimpleDateFormatクラスとtry-catchを使用して日付フォーマットが正しいかどうかを判定できます。以下に例を示します。

import java.text.SimpleDateFormat;

public class DateValidator {
    public static boolean isDateValid(String dateStr, String formatStr) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(formatStr);
        dateFormat.setLenient(false);
        
        try {
            dateFormat.parse(dateStr);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
    
    public static void main(String[] args) {
        String dateStr = "2022-01-01";
        String formatStr = "yyyy-MM-dd";
        
        if (isDateValid(dateStr, formatStr)) {
            System.out.println("日期格式正确");
        } else {
            System.out.println("日期格式错误");
        }
    }
}

例では、isDateValid メソッドを定義しています。このメソッドは 2 つのパラメータを受け取ります。dateStr は日付文字列を表し、formatStr は日付書式文字列を表します。メソッドでは、まず SimpleDateFormat オブジェクトを作成し、严格モード(setLenient(false))に設定してから、指定された日付書式を使用して日付文字列を解析しようとします。解析が成功すれば True を返し、失敗すれば例外を捕捉して False を返します。

Mainメソッドでは、「2022-01-01」というサンプルの日付文字列と、「yyyy-MM-dd」という日付フォーマット文字列を使ってisDateValidメソッドを呼び出し、返される結果に応じて適切なメッセージを出力しています。

なお、SimpleDateFormatはスレッドセーフではないので、マルチスレッド環境で使用する場合は、ThreadLocalを利用して各スレッドでSimpleDateFormatオブジェクトを使い分けるようにする。

bannerAds