2012-04-30 3 views
0

В настоящее время моя проблема заключается в том, что значения, полученные из DatePickerDialog, не корректно обрабатываются, когда я отправляю их в конструктор Date.Android DatePickerDialog дает неправильные значения

Получение значений даты (в соответствии с предложениями от another post) ....

private DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener() { 
    @Override 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
      int dayOfMonth) { 
     mYear = year; 
     mMonth = monthOfYear + 1; 
     mDayOfMonth = dayOfMonth; 
     String t = "listener => mYear=" + mYear + "; mMonth=" + mMonth + 
       "; mDayOfMonth=" + mDayOfMonth + ";"; 
     Log.i(TAG, t); 
    } 
}; 

Вышеприведенные каротаж условие приводит к:

04-30 21:34:10.548: I/TodosActivity(29510): listener => mYear=2012; mMonth=5; mDayOfMonth=2; 

дата устанавливается ....

todo.setDueDate(new Date(mYear, mMonth, mDayOfMonth)); 

Я проверил установленный срок с ....

String t = "setNewDueDate(Todo) => #" + todo.getId() + ": " + todo.getTitle() + " (" + 
      todo.getText() + "). Created on " + format.format(todo.getCreatedDate()) + 
      ". Last modified on " + format.format(todo.getModifiedDate()) + 
      ". Due on " + format.format(todo.getDueDate()) + "."; 
Log.i(TAG, t); 

что привело ....

04-30 21:34:05.703: I/TodosActivity(29510): setNewDueDate(Todo) => #1: Test (Test). Created on 30 Apr 2012 20:07:51. Last modified on 30 Apr 2012 20:55:27. Due on 31 Dec 1899 00:00:00. 

EDIT:

Установка начальных значений DatePickerDialog ...

 return new DatePickerDialog(this, listener, cal.get(Calendar.YEAR), 
       cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); 

Есть ли что-нибудь, что я должен/не должен был делать?

ответ

4

Используйте Calendar и различные методы , чтобы обновить дату.

Например, this sample project имеет такой код:

DatePickerDialog.OnDateSetListener d=new DatePickerDialog.OnDateSetListener() { 
    public void onDateSet(DatePicker view, int year, int monthOfYear, 
          int dayOfMonth) { 
     dateAndTime.set(Calendar.YEAR, year); 
     dateAndTime.set(Calendar.MONTH, monthOfYear); 
     dateAndTime.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
     updateLabel(); 
    } 
    }; 

dateAndTime, где это Calendar.