Когда я реализую DatePickerDialog, он отображает правильную дату, но когда я нажимаю «ОК», чтобы установить дату в EditText, я получаю строку даты с неправильным месяцем, которая кажется случайной каждый раз, когда я пытаюсь
final Calendar calendar = Calendar.getInstance();
final DatePickerDialog.OnDateSetListener dateListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
calendar.set(Calendar.YEAR,year);
calendar.set(Calendar.MONTH,month);
calendar.set(Calendar.DAY_OF_MONTH,dayOfMonth);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-mm-yyyy", Locale.getDefault());
String newDate = dateFormat.format(new Date(calendar.getTimeInMillis()));
Log.e(TAG,"date: "+newDate);
mTextSetDate.setText(newDate);
}
};
И для отображения DatePickerDialog у меня есть эта функция
private void showDatePicker(DatePickerDialog.OnDateSetListener listener, Calendar cal){
new DatePickerDialog(AddNewRecordActivity.this,listener,
cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH)).show();
}
и вот вывод лога
09-26 08:20:13.511 4240-4240/tz.co.neelansoft.personalaccountant E/AddNewRecordActivity: date: 26-18-2018
Я включил скриншот диалога datepicker и строка даты
SimpleDateFormat
и друзей и добавить ThreeTenABP на свой Android. проект, чтобы использоватьjava.time
, современный API даты и времени Java. С ним намного приятнее работать. - person Ole V.V.   schedule 26.09.2018