如何限制DatePicker上的用户只能选择today_date - 18年之前的日期

时间:2012-02-07 10:38:59

标签: android android-widget

如何限制DatePicker以后不能选择日期。我在活动中有DatePicker,用于注册。该怎么办如果用户少于18年(例如在今天 - 18年之后无法选择日期),用户就无法选择生日日期?

3 个答案:

答案 0 :(得分:2)

您没有提到哪个API级别。在Honeycomb及更高版本中,DatePicker设置了可用于限制允许范围的MIN / MaxDate方法。

答案 1 :(得分: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();

将其设置为datepicker

中的最大允许日期
   datepicker2.setMaxDate(time);

希望对寻求答案的其他人有所帮助

答案 2 :(得分:0)

从现在开始计算当前年份(当前年份)的年份,以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);
}