判断日期字符串合法性不止是判断日期格式是否正确,还要判断它所代表的日期是否是一个存在的日期。如“20060231”就不是一个合法的日期。这作为插入数据库之前的检查非常有必要。但是使用 SimpleDateFormat 类来转换“20060231”不会抛出错误或者异常,而会得到2006年3月3日。所以我们不能这样简单的来判断日期的合法性。不过我们还是可以利用这样的特性来达到目的:
/**
* 判断日期的合法性。
* 本方法不仅仅是判断格式,而且对日期的有效性进行检查。
* 如“2006-02-31”就不是一个合法日期。
*
* @param datestr 要检查的日期字符串
* @param pattern 日期格式
*
* @return 如果日期字符串代表的日期是有效的,则返回 true。
*/
public static boolean isValidDate(String datestr, String pattern) {
// 实现:将字符串转换为 Date,那么“20060231”就会变成2006年3月3日。再转换成字符串
// 就变成了“20060303”,与原来的字符串不符。由此可知“20060231”是一个非法日期。
try {
Date date = getDate(datestr, pattern);
String datestr2 = getString(date, pattern);
return datestr.toLowerCase().indexOf(datestr2.toLowerCase()) != -1;
} catch (ParseException e) {
return false;
}
}
* 判断日期的合法性。
* 本方法不仅仅是判断格式,而且对日期的有效性进行检查。
* 如“2006-02-31”就不是一个合法日期。
*
* @param datestr 要检查的日期字符串
* @param pattern 日期格式
*
* @return 如果日期字符串代表的日期是有效的,则返回 true。
*/
public static boolean isValidDate(String datestr, String pattern) {
// 实现:将字符串转换为 Date,那么“20060231”就会变成2006年3月3日。再转换成字符串
// 就变成了“20060303”,与原来的字符串不符。由此可知“20060231”是一个非法日期。
try {
Date date = getDate(datestr, pattern);
String datestr2 = getString(date, pattern);
return datestr.toLowerCase().indexOf(datestr2.toLowerCase()) != -1;
} catch (ParseException e) {
return false;
}
}
浙公网安备 33010602011771号