Метод parse не пытается сопоставить всю входную строку.То есть префикс 01-01-2010
совпадает, и этого достаточно.
From 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