以下代码...
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
df.setLenient(false);
Date date = df.parse("2012115");
...将字符串解析为"2012115"
相当于 2012 年 11 月 5 日的日期。我希望它无法解析,因为它缺少一天字符。换句话说,我只希望字符串"20121105"
计算到那个日期。除了评估字符串的长度之外,有没有办法强制执行此操作?
以下代码...
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");
}