日付の形式が正しいかどうかを 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オブジェクトを使い分けるようにする。