代码之家  ›  专栏  ›  技术社区  ›  Shawn.Y

设置日期选择器对话框的最小年份(用于选择DOB)

  •  0
  • Shawn.Y  · 技术社区  · 8 年前

    我已经为我的代码创建了一个函数,它设置了一个规则来限制用户选择系统日期选择器对话框之前的日期

    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 回复  |  直到 8 年前
        1
  •  0
  •   TomH    8 年前

    使用下面的最小值和最大值

    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);
    
        2
  •  0
  •   Abhishek D    8 年前

    你可以使用 android:startYear 其中包括开始年份。

    查看文档 here .

        3
  •  0
  •   Shawn.Y    8 年前

    发现大多数解决方案使用的方法是.add(calendar.year,-4),但这也会对要选择的月份和日期造成限制。例如,当当前日期为2018年6月11日时,运行这行代码可以在4年前(2018-4=2014)运行,但也可以限制在您的月份+日期中,您只能选择2018年6月11日之前的日期。

    经过几次尝试,我找到了一个解决方案,手动将日期和月份设置为12月31日,这样我就可以选择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());