SimpleDateFormat.parse () ignoruje liczbę znaków we wzorcu

Próbuję przeanalizować ciąg znaków, który może mieć różne formaty drzewa. Nawet jeśli łańcuch nie powinien pasować do drugiego wzoru, to w jakiś sposób to robi i dlatego zwraca nieprawidłową datę.

To mój kod:

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;
    }
}

Z wejściem2013-01-31 Dostaję wyjście05.07.0036.

Jeśli spróbuję przeanalizować31-01-2013 lub31.01.2013 dostaję31.01.2013 zgodnie z oczekiwaniami.

Uznałem, że program da mi dokładnie takie samo wyjście, jeśli ustawię takie wzory:

SimpleDateFormat sdf = new SimpleDateFormat("d.M.y");
SimpleDateFormat sdf2 = new SimpleDateFormat("d-M-y");
SimpleDateFormat sdf3 = new SimpleDateFormat("y-M-d");

Dlaczego ignoruje liczbę znaków w moim wzorze?

questionAnswers(4)

yourAnswerToTheQuestion