目录
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("aaaa/02/31")); }
◆输出结果
真 假 假
