【问题标题】:Android DatePicker/Dialog displaying incorrect month/s using min/max dateAndroid DatePicker/Dialog 使用最小/最大日期显示不正确的月份/秒
【发布时间】:2014-02-14 12:47:35
【问题描述】:

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

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

如果我的最小/最大日期在一个月的范围内(例如:7.2.2014 - 27.2.2014),我仍然会在对话框中显示相邻月份(1 月、3 月)。 如果我选择上个月(一月),对话框会自动切换到 minDate 并且月份切换回二月。下个月也是如此。

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

【问题讨论】:

  • 我认为月份从零开始 = 一月和 11 = 十二月.. 它可能对你有所帮助
  • 认为你误解了我的主题。我可以选择三月和一月。但我只有二月之间的范围。所以我不想让其他月份(一月和三月)显示出来
  • @Maxi 您好,您的问题找到解决方案了吗?

标签: android datepicker datepickerdialog


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我有同样的错误(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) {
                ...
        });
    

    【讨论】:

      猜你喜欢
      • 2015-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多