2013-02-03 21 views
5

Jak wykonać tę konwersję w języku Java?Konwertuj "piątek, 1 lutego 2013 r." Na "2013-02-01"

Obecnie robię:

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

Powoduje to jednak w niewłaściwym formacie. Daje mi następujący wynik:

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

Dlaczego tak wiele razy powtórzyłeś dane wyjściowe dla dwóch wartości? –

+0

Zmień "DD" na "d" i "YYYY" przez "yyyy" –

+0

Zamieniłbym "System.err.println (" Parse Exception: "+ pe);' z 'pe.printStackTrace();'. Albo, jeszcze lepiej, wyrzuć ten wyjątek ze swojej metody. –

Odpowiedz

9

używasz DD w swojej części analizowania, która jest dni w roku. Zamiast tego potrzebujesz dd. Prawdopodobnie również chcesz yyyy (rok) zamiast YYYY (tydzień w roku). (W większości przypadków mają tę samą wartość, ale nie zawsze.)