为Datepicker对话框设置最小年份(用于选择DOB)

时间:2018-06-07 06:59:40

标签: android calendar datepickerdialog

我为我的代码创建了一个函数,该函数设置了一个规则,限制用户选择前一天,然后选择日期选择器对话框中的系统日期

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 :(得分:0)

使用以下内容作为最低和最高

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);

答案 1 :(得分:0)

您可以使用包含开始年份的android:startYear

查看文档here

答案 2 :(得分:0)

使用方法.add(Calendar.YEAR,-4)发现大部分解决方案,但是这也创造了月份的限制。日期待选。例如,当前日期为11 / Jun / 2018时,运行该行代码可以在4年前(2018-4 = 2014年),但也限制在您的月份+日期,您只能选择11 / Jun之前的日期/ 2018。

经过几次尝试后,我找到了手动设置日期和时间的解决方案。月份到31/12月,以便我可以选择范围从2014年12月31日到2014年1月1日

    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());