判断日期字符串合法性不止是判断日期格式是否正确,还要判断它所代表的日期是否是一个存在的日期。如“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;
        }
    }