Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何强制dateFormat将指定数量的字符作为有效字符?_Java_Date_Formatting_Simpledateformat - Fatal编程技术网

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

Java 如何强制dateFormat将指定数量的字符作为有效字符?,java,date,formatting,simpledateformat,Java,Date,Formatting,Simpledateformat,下面的代码 SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); df.setLenient(false); Date date = df.parse("2012115"); …将字符串“2012115”解析为相当于2012年11月5日的日期。我希望它解析失败,因为它缺少一天字符。换句话说,我只希望字符串“20121105”计算到该日期。除了计算字符串的长度外,还有其他方法来强制执行此操作吗 …将字符串“2012115”解析为相当于20

下面的代码

SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
df.setLenient(false);
Date date = df.parse("2012115");
…将字符串
“2012115”
解析为相当于2012年11月5日的日期。我希望它解析失败,因为它缺少一天字符。换句话说,我只希望字符串
“20121105”
计算到该日期。除了计算字符串的长度外,还有其他方法来强制执行此操作吗

…将字符串“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);    

实际上,您可以重新格式化它,并检查它们是否相同

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");
}

谢谢你,约根德拉,我就是这么想的。我会再等一会儿,然后再把你的答案标记为正确,希望它不是;-)。我知道这是一个老生常谈的答案,但我必须承认,它非常聪明,在我的情况下非常有效。