0

我有一个存储在字符串中的日期,我需要验证它是否代表 ISODateFormat 中的日期或星期日期。

如果它是任何一种格式,字符串都是可以接受的。

我可以构建 2 个格式化程序并传递字符串并检查它们在哪里抛出异常并验证它。

String date;
final DateTimeFormatter dateFormatter = ISODateTimeFormat.date();
final DateTimeFormatter weekdateFormatter = ISODateTimeFormat.weekDate();
boolean isDate=true,isWeekDate=true;

try {
      dateFormatter.parseDateTime(date);
}
catch (IllegalArgumentException e) {
      isDate =false;
}

try {
    weekdateFormatter.parseDateTime(date);
}
catch (IllegalArgumentException e) {
    isWeekDate =false;
}

if(!isDate && !isWeekDate)
    throw UserDefinedException(); 

有没有更好的方法呢?

4

1 回答 1

0

附加方法

   /**
    * @return null if string is invalid
    */
   public static DateTime checkDate(String dateAsString, DateTimeFormatter formatter)
   {
      DateTime retVal = null;
      try {
         retVal = formatter.parseDateTime(dateAsString);
      } catch (IllegalArgumentException ex){
      }
      return retVal;
   }  

用法

   String date = "someString";
   if (checkDate(date, ISODateTimeFormat.date()) == null 
      || checkDate(date, ISODateTimeFormat.weekDate()) == null) 
   {
      throw new UserDefinedException();
   }  

或多种格式的 utils 方法

   /**
    * @return null if string is invalid
    */
   public static DateTime checkDate(String dateAsString,
                                   DateTimeFormatter[] formatters)
   {
      DateTime retVal = null;
      for (final DateTimeFormatter formatter : formatters)
      {
         try
         {
            retVal = formatter.parseDateTime(dateAsString);
         }
         catch (IllegalArgumentException ex)
         {
         }
         if (retVal != null)
         {
            break;
         }
      }
      return retVal;
   }
于 2013-01-16T10:54:55.567 回答