为日期选择器对话框设置最小年份(用于 select DOB)
Set minimum year (use to select DOB) for Datepicker dialog
我已经为我的代码创建了一个函数,该函数设置了一个规则,将用户限制在 select 前一天,然后系统日期来自日期选择器对话框
protected void setMinMax() {
Calendar minAllowedDate = CommUtils.getMinAllowedDate();
minAllowedDate.add(Calendar.MILLISECOND, -1000);
datePickerDialog.getDatePicker().setMinDate(minAllowedDate.getTimeInMillis());
现在我想为 select DOB 的用户创建另一个日期选择器,我想做的是设置一个规则,用户 DOB 应该在 4-150 岁之间,这意味着用户可以select 应该是系统日期的 -4 & -150。如果使用上面的代码,我应该在
中输入什么
minAllowedDate.add(Calendar.MILLISECOND, -1000);
我曾尝试使用以下代码将 150 年作为最小选项
minAllowedDate.add(Calendar.YEAR, -150);
使用下面的最小值和最大值
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);
您可以使用 android:startYear
,其中包括开始年份。
查看文档here。
发现大多数解决方案都使用 .add(Calendar.YEAR,-4) 方法,但这也限制了月份和日期为 select。例如,当当前日期是 11/Jun/2018,运行 那行代码你可以在 4 年前(2018-4=2014)但是也限制在你的月 + 日,你只能select 日期早于 11/Jun/2018.
经过几次尝试,我想出了手动将日期和月份设置为 31/Dec 的解决方案,这样我就可以选择从 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());
我已经为我的代码创建了一个函数,该函数设置了一个规则,将用户限制在 select 前一天,然后系统日期来自日期选择器对话框
protected void setMinMax() {
Calendar minAllowedDate = CommUtils.getMinAllowedDate();
minAllowedDate.add(Calendar.MILLISECOND, -1000);
datePickerDialog.getDatePicker().setMinDate(minAllowedDate.getTimeInMillis());
现在我想为 select DOB 的用户创建另一个日期选择器,我想做的是设置一个规则,用户 DOB 应该在 4-150 岁之间,这意味着用户可以select 应该是系统日期的 -4 & -150。如果使用上面的代码,我应该在
中输入什么minAllowedDate.add(Calendar.MILLISECOND, -1000);
我曾尝试使用以下代码将 150 年作为最小选项
minAllowedDate.add(Calendar.YEAR, -150);
使用下面的最小值和最大值
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);
您可以使用 android:startYear
,其中包括开始年份。
查看文档here。
发现大多数解决方案都使用 .add(Calendar.YEAR,-4) 方法,但这也限制了月份和日期为 select。例如,当当前日期是 11/Jun/2018,运行 那行代码你可以在 4 年前(2018-4=2014)但是也限制在你的月 + 日,你只能select 日期早于 11/Jun/2018.
经过几次尝试,我想出了手动将日期和月份设置为 31/Dec 的解决方案,这样我就可以选择从 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());