投机取巧的办法是split("-"),然后看结果length是否大于0.

解决方案 »

  1.   

    写个正则就好了。或者兼容性考虑的话,直接将输入的用SimpleDateFormate 
    formate一下
      

  2.   

    /**
      * 判断字符串是否是有效的日期, 格式"yyyy-MM-dd,yyyy-MM-d,yyyy-M-dd,yyyy-M-d
      * "yyyy/MM/dd,yyyy/MM/d,yyyy/M/dd,yyyy/M/d" "yyyyMMdd"
      * 
      * @param date
      *            日期字符串
      * @return 是则返回true,否则返回false
      */
     public static boolean isValidDate(String date) {
          if ((date == null) || (date.length() < 8)) {
             return false;
          }
          try {
             boolean result = false;
             SimpleDateFormat formatter;
             char dateSpace = date.charAt(4);
             String format[];
              if ((dateSpace == '-') || (dateSpace == '/')) {
                 format = new String[4];
                 String strDateSpace = Character.toString(dateSpace);
                 format[0] = "yyyy" + strDateSpace + "MM" + strDateSpace + "dd";
                 format[1] = "yyyy" + strDateSpace + "MM" + strDateSpace + "d";
                 format[2] = "yyyy" + strDateSpace + "M" + strDateSpace + "dd";
                 format[3] = "yyyy" + strDateSpace + "M" + strDateSpace + "d";
             } else {
                 format = new String[1];
                 format[0] = "yyyyMMdd";
             }
             for (int i = 0; i < format.length; i++) {
                 String aFormat = format[i];
                 formatter = new SimpleDateFormat(aFormat);
                 formatter.setLenient(false);
                 String tmp = formatter.format(formatter.parse(date));
                 if (date.equals(tmp)) {
                         result = true;
                         break;
                 }
             }
             return result;
         } catch (ParseException e) {
             return false;
         }
     }
      

  3.   


    结果是false
        public static void main(String[] args)
        {
            timeValidata time=new timeValidata();
            boolean result = time.isValidDate("2014-01-15 21:26:43");
            System.out.println(result);
        }
    String tmp = formatter.format(formatter.parse(date));
     if (date.equals(tmp)) {
                            result = true;
                            break;
                    }
    tmp是2014-01-15 date是2014-01-15 21:26:43 不相等
      

  4.   

    直接用DateFormat的严格解析就是了DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    df.setLenient(true);//设置严格解析只要不是这个格式的都会报异常
    try{
      df.parse(你的时间字符串);
    }catch(Exception e){
      //异常就说明格式不符合
    }