如何强制dateFormat将指定数量的字符作为有效字符?

时间:2012-11-22 22:31:09

标签: java date formatting simpledateformat

以下代码......

SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
df.setLenient(false);
Date date = df.parse("2012115");

...将字符串"2012115"解析为相当于2012年11月5日的Date。我希望它解析失败,因为它缺少一天的字符。换句话说,我只希望字符串"20121105"计算到该日期。除了评估字符串的长度之外,有没有办法强制执行此操作?

2 个答案:

答案 0 :(得分:2)

  

...解析字符串" 2012115"相当于2012年11月5日的日期。我希望它解析失败,因为它缺少一天的字符。换句话说,我只想要字符串" 20121105"评估那个日期。

我怀疑你只能使用格式化程序。作为一种解决方法,您可能需要在解析之前检查日期字符串长度,如下所示:

      String dateString = "2012115";
      String formatString = "yyyyMMdd";
      if(dateString == null || dateString.length() != formatString.length()){
         throw new ParseException("Invalid Date Input", 0);
      }
      SimpleDateFormat formatter= new SimpleDateFormat(formatString);
      formatter.setLenient(false);
      Date date = df.parse(dateString);    

答案 1 :(得分:1)

你可以再次格式化它并检查它们是否相同

SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
df.setLenient(false);
String dstr = "2012115";
Date date = df.parse(dstr);
String newdstr = df.format (date);
if (!newdstr.equals(dstr)) {
   throw new ParseException ("bla bla");
}