目錄
Java 日期有效性和存在性檢查 Calendar.setLenient()
Javaで日期有效性和存在性檢查這是一個範例程序,它執行以下操作。
這會檢查指定的日期字串(yyyy/MM/dd 或 yyyy-MM-dd)是否存在於日曆中。
java.text.DateFormat班級setLenient()指定 false 可實現嚴格的日期解析。 (*DateFormat 類別內部執行java.util.Calendar 類別的 setLenient() 方法(這是來電…)
此檢查方法利用了這樣一個事實:使用無效或不存在的日期呼叫 parse() 方法將導致 ParseException 異常。
範例程式
/**
* 日付の妥当性チェックを行います。
* 指定した日付文字列(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("2007/02/31")); System.out.println(checkDate("2aaaa2/31");
◆輸出結果
真 假 假
