2013-02-03 22 views
5

Tôi làm cách nào để thực hiện chuyển đổi này trong Java?Chuyển đổi "Thứ Sáu, ngày 1 tháng 2 năm 2013" thành "2013-02-01"

Hiện nay, tôi đang làm:

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

Tuy nhiên, kết quả này trong một định dạng không đúng. Nó cung cấp cho tôi kết quả sau:

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

Tại sao bạn lặp lại đầu ra cho hai giá trị quá nhiều lần? –

+0

Thay đổi "DD" bằng "d" và "YYYY" theo "yyyy" –

+0

Tôi sẽ thay thế 'System.err.println (" Parse Exception: "+ pe);' bằng 'pe.printStackTrace();'. Hoặc, tốt hơn, hãy ném ngoại lệ đó từ phương pháp của bạn. –

Trả lời

9

Bạn đang sử dụng DD trong phần phân tích của bạn, là ngày trong năm. Thay vào đó, bạn muốn dd. Bạn cũng có thể muốn yyyy (năm) thay vì YYYY (năm trong tuần). (Trong hầu hết các trường hợp, chúng có cùng giá trị, nhưng không phải lúc nào.)