使用一个SimpleDateFormat对象parse一下,如果失败,会返回null。

解决方案 »

  1.   

    第一步,使用String的matches方法初步验证是否符合pattern:"\\d{4}-\\d{2}-\\d{2}"。
    然后,使用一个SimpleDataFormat对象parse一下,如果失败,会返回NULL。
      

  2.   

    楼上的办法检测不出来2005-04-31这样的日期(会parse为2005.5.1)
    给个办法供参考
      /**
       * 检查日期合法性
       * @param s String
       * @return boolean
       */
      public static boolean checkDate(String s) {
        boolean ret = true;
        try {
          DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
          ret = df.format(df.parse(s)).equals(s);
        }
        catch (ParseException e) {
          ret = false;
        }
        return ret;
      }
      

  3.   

    啊?这样啊。
    Java类库也太不厚道了,4月31日就是5月一日,寒一个。-_-
      

  4.   

    DateFormat类有个方法setLenient,默认是true,要是设置成false的话不出出现“4月31日就是5月一日”的问题了,因为SimpleDataFormat从DateFormat继承的,所以SimpleDataFormat也可以用这个方法
      

  5.   

    楼上说的不错,以前没注意过这个函数,学习。      DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
          df.setLenient(false);
          df.parse(s);