2013-02-03 11 views
5

Wie kann ich diese Konvertierung in Java durchführen?Convert "Freitag, 1. Februar 2013" in "2013-02-01"

Derzeit bin ich tun:

public static String formatDate(String strDateToFormat) { 
    try { 
     SimpleDateFormat sdfSource = new SimpleDateFormat("EEEE, MMMM DD, YYYY"); 
     Date date = sdfSource.parse(strDateToFormat); 
     SimpleDateFormat sdfDestination = new SimpleDateFormat("yyyy-MM-dd"); 
     return sdfDestination.format(date); 
    } catch (ParseException pe) { 
     System.err.println("Parse Exception : " + pe); 
    } 

    return null; 
} 

Dies ist jedoch in einem falschen Format führt. Es gibt mir die folgende Ausgabe:

Friday, February 1, 2013 > 2013-01-04 
Thursday, January 31, 2013 > 2013-01-03 
+2

Warum haben Sie die Ausgabe für zwei Werte so viele Male wiederholt? –

+0

Ändere "DD" durch "d" und "YYYY" durch "yyyy" –

+0

Ich würde 'System.err.println (" Parse Ausnahme: "+ pe);' mit 'pe.printStackTrace();' ersetzen. Oder, noch besser, werfen Sie diese Ausnahme aus Ihrer Methode. –

Antwort

9

Sie DD in Ihrem Parsing Teil verwenden, die den Tag des Jahres ist. Sie möchten stattdessen dd. Wahrscheinlich möchten Sie auch yyyy (Jahr) statt YYYY (Wochenjahr). (In den meisten Fällen sind sie der gleiche Wert, aber nicht immer.)