2014-05-18 3 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 вы используете:

Параметры:
год - год минус 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

Отличный ответ Jon –

Смежные вопросы