Как установить минимальную дату DatePicker на текущую дату
Я хочу установить минимальную дату, которую пользователь может выбрать в DatePicker, до текущей даты. Я пробовал это:
DatePicker datePicker = (DatePicker) findViewById(R.id.event_date);
datePicker.setMinDate(System.currentTimeMillis());
Это дает мне следующее исключение:
12-01 12:23:31.226: E/AndroidRuntime(10311): Caused by: java.lang.IllegalArgumentException: fromDate: Sat Dec 01 12:23:31 EST 2012 does not precede toDate: Sat Dec 01 12:23:31 EST 2012
Как это сделать?
Ответы
Ответ 1
Ошибка говорит, что вы не можете установить минимальную дату именно сейчас. Попробуйте вычитать секунду:
datePicker.setMinDate(System.currentTimeMillis() - 1000);
В исходном коде минимальная дата должна быть до, а не равна текущей дате:
if (date.before(mMinDate)) {
throw new IllegalArgumentException("fromDate: " + mMinDate.getTime()
+ " does not precede toDate: " + date.getTime());
}
Таким образом, вам просто нужно вычесть достаточно времени (System.currentTimeMillis()
) pass date.before(mMinDate)
.
Ответ 2
Если вы не хотите использовать настраиваемый диалог. Используйте этот код:
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
Ответ 3
Это отлично сработало для меня. легко и приятно.
DatePickerDialog dialog = new DatePickerDialog(this, this,
Calendar.YEAR,Calendar.MONTH,
Calendar.DAY_OF_MONTH);
dialog.getDatePicker().setMinDate(Calendar.getInstance().getTimeInMillis());
dialog.show();
Ответ 4
Установите флажок "Дата и время" для Android DatePickerDialog.
Вот examples.
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dpd = new DatePickerDialog(getActivity(),AlertDialog.THEME_TRADITIONAL,this,year, month, day);
//Get the DatePicker instance from DatePickerDialog
DatePicker dp = dpd.getDatePicker();
//Set the DatePicker minimum date selection to current date
dp.setMinDate(c.getTimeInMillis());//get the current day
//dp.setMinDate(System.currentTimeMillis() - 1000);// Alternate way to get the current day
//Add 6 days with current date
c.add(Calendar.DAY_OF_MONTH,6);
//Set the maximum date to select from DatePickerDialog
dp.setMaxDate(c.getTimeInMillis());
//Now DatePickerDialog have 7 days range to get selection any one from those dates
Ответ 5
Добавление этой строки к вашему фрагменту DatePicker установит минимальную дату в качестве текущей и отключит предыдущие месяцы.
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
Ответ 6
Это может помочь вам.
Calendar cal=Calendar.getInstance();
int year=cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH);
int day=cal.get(Calendar.DAY_OF_MONTH);
int hour=cal.get(Calendar.HOUR_OF_DAY);
int min=cal.get(Calendar.MINUTE);
datePicker.updateDate(year, month, day);
timePicker.setCurrentHour(hour);
timePicker.setCurrentMinute(min);
Ответ 7
Попробуйте это
datePicker.setMinDate(new GregorianCalendar.getTimeInMillis());
Ответ 8
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
ИЛИ ЖЕ
DatePickerDialog dialog = new DatePickerDialog(this, this,
Calendar.YEAR,Calendar.MONTH,
Calendar.DAY_OF_MONTH);
dialog.getDatePicker().setMinDate(Calendar.getInstance().getTimeInMillis());
dialog.show();