【问题标题】:date and weekdate validation in javajava中的日期和星期日期验证
【发布时间】:2013-01-15 17:35:36
【问题描述】:

我有一个存储在字符串中的日期,我需要验证它是代表 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(); 

有没有更好的办法?

【问题讨论】:

  • @user1097489 不执行日期验证。
  • 我的意思是避免不必要的异常。 regular expressions 是一个可行的选择。

标签: java date jodatime


【解决方案1】:

附加方法

   /**
    * @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;
   }

【讨论】:

    猜你喜欢
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多