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

Почему он игнорирует количество символов в моем шаблоне?

Ответы на вопрос(4)

Ваш ответ на вопрос