需要自己判断,如果要求不严格的话可以用正则表达式
\d{4}-[01]?\d-[0123]?\d

解决方案 »

  1.   

    给你发个例子,期望对你有帮助!!^_^
    private static SimpleDateFormat dateFormat = new SimpleDateFormat();
        public static boolean isValidDate(String dateString, String dateFormatPattern) {
            Date validDate = null;
            synchronized (dateFormat) { 
                try {
                    dateFormat.applyPattern(dateFormatPattern);
                    dateFormat.setLenient(false);
                    validDate = dateFormat.parse(dateString);
                }
                catch (ParseException e) {
                    // Ignore and return null
                }
            }
            return validDate != null;
        }
      

  2.   

    先用正则表达式检验一下
     String date = "1981-2-21";
     Pattern p = Pattern.compile("\\d{4}-\\d{1,2}-\\d{1,2}");
     Matcher m = p.matcher(date);
     boolean b = m.matches();
     System.out.println(b);
      

  3.   

    String date = "1981-2-32";
    这个是可以通过的,但是32并不是合法的日期。
    必须要手工判断闰年,哪个月有几天吗?为什么标准库不提供一个方法呢?
      

  4.   

    终于找到了,感谢 野狼 。
    dateFormat.setLenient(false);这一句是设置严格与否。不过使用异常来判断到底是不是体面,我还是心有余悸。