如何限制用户在日期选择器中只能选择今天日期之前18年的日期?

6

如何限制DatePicker不能选择未来的日期。我在注册活动中使用了DatePicker。为了让用户无法选择18岁以下的生日日期(例如不能选择今天日期减去18年后的日期之后的日期),该怎么做?


将设定日期转换为毫秒并与当前日期的毫秒进行比较。计算两个毫秒之间的时间间隔。 - Pattabi Raman
3个回答

2
我希望你已经得到了答案。以下内容可能对其他人也有用: 如果您想禁止用户选择18年后的日期,可以按照以下步骤操作。
获取从1970年1月1日到现在18年后的时间(以毫秒为单位)。
   Calendar cal = Calendar.getInstance();
   cal.set(cal.get(Calendar.YEAR)+18,cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH), 
            cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), 0);
   long time = cal.getTimeInMillis();

将其设置为日期选择器中允许的最大日期

   datepicker2.setMaxDate(time);

希望这能对其他寻找答案的人有所帮助。

2

您没有提到具体的API级别。在蜂巢和更高版本中,DatePicker有设置最小/最大日期的方法,您可以使用这些方法来限制可允许的范围。


0

从现在(当前年份)往前数18年,通过 int minYear = currentYear - 18; 计算出最小年份。然后将该日期设置为日期选择器的最大限制(最小年份,当前月份,当前日期)。

    private static void setMaxLimitInDatePicker(DatePickerDialog datePickerDialog) {
    final Calendar calendar = Calendar.getInstance();

    int currentYear = calendar.get(Calendar.YEAR);
    int currentMonth = calendar.get(Calendar.MONTH);
    int currentDay = calendar.get(Calendar.DAY_OF_MONTH);

    int minYear = currentYear - 18;
    int minMonth = currentMonth;
    int minDay = currentDay;

    calendar.set(minYear, minMonth, minDay);
    long minDateInMilliSeconds = calendar.getTimeInMillis();

    // Set 18 years from today as max limit of date picker
    datePickerDialog.getDatePicker().setMaxDate(minDateInMilliSeconds);
}

请考虑解释您的答案。不鼓励只有代码的答案。 - ADyson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接