【问题标题】:CLOSED - Android DatePicker restrict max date [duplicate]已关闭 - Android DatePicker 限制最大日期 [重复]
【发布时间】:2016-08-16 08:28:46
【问题描述】:

我正在尝试在 android 中创建一个 DatePicker 来选择用户的出生日期。我想以从日期选择器中选择的年龄大于 18 岁的方式设置年份。例如。如果有人点击 datetimepicker 对话框,他/她应该看到最大年份为 1998,因为它相当于 18 年。

我的代码如下:

            dobDatePicker = new DatePickerDialog(getContext(), AlertDialog.THEME_HOLO_LIGHT, new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                candidateDob.setText(dateFormatter.format(newDate.getTime()));
            }
        },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
        dobDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());

所以现在,限制是直到当前日期。请帮忙:)

【问题讨论】:

  • 你甚至没有读过代码。他已经在使用 setMaxDate

标签: android date android-datepicker


【解决方案1】:

看到这两行:

newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
dobDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis());

您将 ma​​xDate 设置为当前年份。试试这样的:

Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -18);
dobDatePicker.getDatePicker().setMaxDate(c.getTime());

【讨论】:

  • 谢谢 :) 就像一个魅力!
【解决方案2】:

dobDatePicker.getDatePicker().setMaxDate(System.currentTimeMillis() - (long) 1000 * 60 * 60 * 24 * 365 * 18); 但它没有考虑闰年,所以日历可能还有其他技巧

【讨论】:

  • 他也可以使用日历,但这个答案似乎合法
  • 谢谢。这行得通:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 2017-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多