日期:2014-05-20  浏览次数:20741 次

校验时间问题
2014-01-15 21:26:43  java类里面如何校验用户输入是否是这种时间格式,用正则吗? 麻烦指点下

------解决方案--------------------
/**
  * 判断字符串是否是有效的日期, 格式"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;
     }
 }
------解决方案--------------------
直接用DateFormat的严格解析就是了

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