2014-05-18 55 views
0

我使用SimpleDateFormat將日期從dd-MM-yyyy轉換爲yyyy-MM-dd 但我沒有正確顯示年份。我試圖將18-5-2014轉換爲2014 -05-18 但我得到3914-05-18。不正確的日期轉換通過SimpleDateFormat

public void onDateSet(DatePicker view, int year,int monthOfYear, int dayOfMonth) 
{ 

    Date selectedDate = new Date(year,monthOfYear, dayOfMonth); 

    String strDate = null; 

     SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); 

     strDate = dateFormatter.format(selectedDate); 

     txtdeliverydate.setText(strDate); 

    } 
+0

'selectedDate'中的值是多少? – Lal

回答

2

我懷疑你沒看過的(deprecated) Date constructor您使用的文檔:

參數:
year - 年減去1900
月 - 之間的月份0-11。
日期 - 在1-31之間的月份的日期。

避免在這裏使用Date這裏。可以使用好的日期/時間庫,例如Joda Time,或者使用Calendar來設置年/月/日值 - 即使如此,該月將基於0。

此外,您的方法目前是接受年/月/日的值......如果您實際上只是嘗試進行轉換,您應該接受一個字符串並返回一個字符串。

public static String convertDateFormat(String text) { 
    TimeZone utc = TimeZone.getTimeZone("Etc/UTC"); 
    SimpleDateFormat parser = new SimpleDateFormat("dd-MM-yyyy", Locale.US); 
    parser.setTimeZone(utc); 
    Date date = parser.parse(text); 

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US); 
    formatter.setTimeZone(utc); 
    return formatter.format(date); 
} 
+0

偉大的答案喬恩 –

相關問題