SimpleDateFormat.parse () игнорирует количество символов в шаблоне
Я пытаюсь разобрать строку даты, которая может иметь дерево разных форматов. Даже если String не должен соответствовать второму шаблону, он каким-то образом соответствует и поэтому возвращает неправильную дату.
Это мой код:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Start {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
try{
System.out.println(sdf.format(parseDate("2013-01-31")));
} catch(ParseException ex){
System.out.println("Unable to parse");
}
}
public static Date parseDate(String dateString) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MM-yyyy");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
Date parsedDate;
try {
parsedDate = sdf.parse(dateString);
} catch (ParseException ex) {
try{
parsedDate = sdf2.parse(dateString);
} catch (ParseException ex2){
parsedDate = sdf3.parse(dateString);
}
}
return parsedDate;
}
}
С входом2013-01-31
Я получаю вывод05.07.0036
.
Если я попытаюсь разобрать31-01-2013
или же31.01.2013
я получил31.01.2013
как и ожидалось.
Я понял, что программа выдаст мне точно такой же вывод, если я установлю шаблоны следующим образом:
SimpleDateFormat sdf = new SimpleDateFormat("d.M.y");
SimpleDateFormat sdf2 = new SimpleDateFormat("d-M-y");
SimpleDateFormat sdf3 = new SimpleDateFormat("y-M-d");
Почему он игнорирует количество символов в моем шаблоне?