code: public static boolean isDate(String date) {
          StringBuffer reg = new StringBuffer("^((\\d{2}(([02468][048])|([13579][26]))-?((((0?");
          reg.append("[13578])|(1[02]))-?((0?[1-9])|([1-2][0-9])|(3[01])))");
          reg.append("|(((0?[469])|(11))-?((0?[1-9])|([1-2][0-9])|(30)))|");
          reg.append("(0?2-?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][12");
          reg.append("35679])|([13579][01345789]))-?((((0?[13578])|(1[02]))");
          reg.append("-?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))");
          reg.append("-?((0?[1-9])|([1-2][0-9])|(30)))|(0?2-?((0?[");
          reg.append("1-9])|(1[0-9])|(2[0-8]))))))");
          Pattern p = Regex.getPattern(reg.toString());
          return p.matcher(date).matches();
      }
docs: 判断日期是否有效,包括闰年的情况
  
  @param date
  日期格式YYYY-mm-dd
  @return true,如果合法