parse 方法不会尝试匹配整个输入字符串。也就是说,前缀01-01-2010
匹配,这就足够了。
来自DateFormat.parse
:
从给定字符串的开头解析文本以生成日期。该方法可能不会使用给定字符串的整个文本。
如果您需要确定它是否是“完全匹配”,您可以尝试以下操作:
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
String strDate = "01-01-2010mwwwwwwwwwwwwwww";
ParsePosition pp = new ParsePosition(0);
Date date = df.parse(strDate, pp);
System.out.println("Complete match: " + (pp.getIndex() == strDate.length()));
strDate = "01-01-2010";
pp = new ParsePosition(0);
date = df.parse(strDate, pp);
System.out.println("Complete match: " + (pp.getIndex() == strDate.length()));
这打印
Complete match: false
Complete match: true