Установите минимальный год (используйте для выбора DOB) для диалога Datepicker - PullRequest
0 голосов
/ 07 июня 2018

У меня есть функция для моего кода, которая устанавливает правило, ограничивающее пользователя в выборе дня раньше, чем системная дата в диалоговом окне выбора даты.

protected void setMinMax() {
    Calendar minAllowedDate = CommUtils.getMinAllowedDate();
    minAllowedDate.add(Calendar.MILLISECOND, -1000);
      datePickerDialog.getDatePicker().setMinDate(minAllowedDate.getTimeInMillis());

. Теперь я хочу создать еще один инструмент выбора даты для пользователя.выберите DOB, то, что я хочу сделать, это установить правила, что DOB пользователя должен быть в возрасте 4-150 лет, что означает, что ГОД, который может выбрать пользователь, должен быть -4 & -150 от системной даты.При использовании приведенного выше кода, что я должен вставить в

minAllowedDate.add(Calendar.MILLISECOND, -1000);

, я пытался использовать приведенный ниже код, который дает мне год 150 как минимальный вариант

minAllowedDate.add(Calendar.YEAR, -150);

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Вы можете использовать android:startYear, который будет включать начальный год.

Смотрите документацию здесь .

0 голосов
/ 11 июня 2018

Обнаружено, что в большинстве решений используется метод .add (Calendar.YEAR, -4), однако это также создает ограничение на месяц и дату, которые будут выбраны.Например, если текущая дата 11 / июнь / 2018, для выполнения этой строки кода вы можете иметь 4 года до (2018-4 = 2014), но также можете ограничить свой месяц + день, который вы можете выбрать только до 11 июня./2018.

После нескольких попыток я изобрел решение, которое вручную установило день и месяц на 31 декабря, чтобы у меня был диапазон опций с 31.12.2014 по 01.01.2014

    Calendar calStart = new GregorianCalendar();
    calStart.setTime(new Date());
    calStart.set(Calendar.MONTH, 11);
    calStart.set(Calendar.DAY_OF_MONTH, 31);
    calStart.add(Calendar.YEAR, -150);

    Calendar calEnd = new GregorianCalendar();
    calEnd.setTime(new Date());
    calEnd.set(Calendar.MONTH, 11);
    calEnd.set(Calendar.DAY_OF_MONTH, 31);
    calEnd.add(Calendar.YEAR,-4);
    datePickerDialog.getDatePicker().setMinDate(calStart.getTimeInMillis());
    datePickerDialog.getDatePicker().setMaxDate(calEnd.getTimeInMillis());
0 голосов
/ 07 июня 2018

Используйте ниже для минимума и максимума

Calendar calStart = new GregorianCalendar();
calStart.setTime(new Date());
calStart.add(Calendar.YEAR, -150);

Calendar calEnd = new GregorianCalendar();
calEnd.setTime(new Date());
calEnd.add(Calendar.YEAR, -4);
...