SimpleDateFormat.parse () ignoriert die Anzahl der Zeichen in pattern

Ich versuche, eine Datumszeichenfolge zu analysieren, die verschiedene Baumformate haben kann. Obwohl der String nicht mit dem zweiten Muster übereinstimmen sollte, funktioniert er irgendwie und gibt daher ein falsches Datum zurück.

Das ist mein Code:

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

Mit der Eingabe2013-01-31 Ich bekomme die Ausgabe05.07.0036.

Wenn ich versuche zu analysieren31-01-2013 oder31.01.2013 Ich bekomme31.01.2013 wie erwartet.

Ich habe festgestellt, dass das Programm genau die gleiche Ausgabe liefert, wenn ich die Muster wie folgt einstelle:

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

Warum wird die Anzahl der Zeichen in meinem Muster ignoriert?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage