Android DatePicker / Dialog使用最小/最大日期显示不正确的月份/秒

时间:2014-02-14 12:47:36

标签: android datepicker datepickerdialog

我正在使用DatePickerDialog和DatePicker来设置特定范围。

datePicker.setMinDate(minDate);
datePicker.setMaxDate(maxDate);

如果我的最小/最大 - 日期在一个月的范围内(例如:2014年7月7日 - 2014年2月27日),我仍然可以在对话框中显示邻居月份(1月,3月)。 如果我选择上个月(1月),对话框会自动切换到minDate,月份会切换回2月。未来月份也是如此。

enter image description here

有没有办法解决这个问题,所以我只会显示在我的范围内的月份?

2 个答案:

答案 0 :(得分:1)

在Android月从零开始......

所以你必须在1月使用0,在12月使用11

答案 1 :(得分:0)

我有相同的错误(和StackOverflow上的许多人)

我的解决方案:

    monthPickerFrom =(DatePicker)mDialogView.findViewById(R.id.monthPickerFrom);
    HideDay(monthPickerFrom);
    Calendar currentDate = Calendar.getInstance();
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, 2007);
    cal.set(Calendar.MONTH, Calendar.JANUARY);
    cal.set(Calendar.DAY_OF_MONTH, 1);
    cal.set(Calendar.HOUR, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    monthPickerFrom.setMinDate(cal.getTimeInMillis());

    cal.set(Calendar.YEAR, currentDate.get(Calendar.YEAR));
    cal.set(Calendar.MONTH, currentDate.get(Calendar.MONTH));
    monthPickerFrom.setMaxDate(cal.getTimeInMillis());

    monthPickerFrom.init(currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), 1, new DatePicker.OnDateChangedListener() {
        @Override
        public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            ...
    });