ビジネスチャット、ビデオ通話、文書管理、スケジュールを統合。IP Messenger 互換。基本無料!

Java 日付の妥当性・存在チェック

Java 日付の妥当性・存在チェック Calendar.setLenient()

Java日付の妥当性・存在チェックを行うサンプルプログラムです。
指定した日付文字列(yyyy/MM/dd or yyyy-MM-dd)がカレンダー上に存在するかどうかをチェックします。

java.text.DateFormatクラスのsetLenient()にfalseを指定すると、日付解析を厳密に行うことができます。(※DateFormatクラスは内部的にはjava.util.CalendarクラスのsetLenient()を呼び出しています。)
不正な日付や、存在しない日付でparse()メソッドを呼び出すと、ParseExceptionが発生することを利用したチェック方法となります。

 お勧めフリーソフト

当サイトで公開している Chat&Messenger は 10年以上の実績がある基本無料の国産ビジネスチャットツールです。ユーザを自動認識して直ぐにチャット、テレビ会議、スケジュール管理などが無料で利用できます。(Windows / Mac / Android / iOS)

サンプルプログラム

/**
 * 日付の妥当性チェックを行います。
 * 指定した日付文字列(yyyy/MM/dd or yyyy-MM-dd)が
 * カレンダーに存在するかどうかを返します。
 * @param strDate チェック対象の文字列
 * @return 存在する日付の場合true
 */
public static boolean checkDate(String strDate) {
    if (strDate == null || strDate.length() != 10) {
        throw new IllegalArgumentException(
                "引数の文字列["+ strDate +"]" +
                "は不正です。");
    }
    strDate = strDate.replace('-', '/');
    DateFormat format = DateFormat.getDateInstance();
    // 日付/時刻解析を厳密に行うかどうかを設定する。
    format.setLenient(false);
    try {
        format.parse(strDate);
        return true;
    } catch (Exception e) {
        return false;
    }
}

実行結果

◆実行例
public static void main(String[] args) {
    System.out.println(checkDate("2007-01-01"));
    System.out.println(checkDate("2007/02/31"));
    System.out.println(checkDate("aaaa/02/31"));
}
◆出力結果
true
false
false