设置从其他日期选择器中选择的日期选择器的最小日期

时间:2015-12-31 10:53:22

标签: android datepicker mindate

我有两个日期选择器,一个是到达日期,另一个是出发日期。 我想要的是当用户打开出发日期选择器时,它应该在此日期选择器对话框中具有+1天作为最短日期。

这就是我正在做的事情

这是我的抵达日期选择器

final Calendar c = Calendar.getInstance();
            arivalYear = c.get(Calendar.YEAR);
            arivalMonth = c.get(Calendar.MONTH);
            arivalDay = c.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog dpd = new DatePickerDialog(this,
                    new DatePickerDialog.OnDateSetListener() {

                        @Override
                        public void onDateSet(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) {
                            arivalDay = year;
                            arivalYear = monthOfYear;
                            arivalMonth = dayOfMonth;

                            arivalDateTV.setText(dayOfMonth + "-"
                                    + (monthOfYear + 1) + "-" + year);

                        }
                    }, arivalYear, arivalMonth, arivalDay);
            dpd.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
            dpd.show();

这是我的出发日期选择器

DatePickerDialog dpd = new DatePickerDialog(this,
                    new DatePickerDialog.OnDateSetListener() {

                        @Override
                        public void onDateSet(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) {
                            departureYear = year;
                            departureMonth = monthOfYear;
                            departureDay = dayOfMonth;

                            departureDateTV.setText(dayOfMonth + "-"
                                    + (monthOfYear + 1) + "-" + year);

                        }
                    }, arivalYear, arivalMonth, arivalDay);
            Date min = new Date();
            min.setDate(arivalDay);
            min.setMonth(arivalMonth);
            min.setYear(arivalYear);

            dpd.getDatePicker().setMinDate(min.getDate());
            dpd.show();

但在这里我甚至可以选择抵达日期之前的日期。 我做错了什么。

提前完成。

2 个答案:

答案 0 :(得分:1)

您可能会为arivalDayarivalMontharivalYear分配错误的值。

在您的抵达日期选择器中,检查您的onDateSet()方法。

以下行可能不正确(您将所选年份指定为arivalDay,将所选月份指定为arivalYear,将选定日期指定为arivalMonth)。

arivalDay = year;
arivalYear = monthOfYear;
arivalMonth = dayOfMonth;

应该是:

arivalDay = dayOfMonth;
arivalYear = year;
arivalMonth = monthOfYear;

也弃用setDate(int day)

  

此方法在API级别1中已弃用。使用   Calendar.set(Calendar.DATE,day)改为。

答案 1 :(得分:1)

对于出发最低日期您设置与到达日期相同。 而不是

min.setDate(arivalDay);

试试这个

min.setDate(arivalDay +1);

并将其设置为到达侦听器而不是此

arivalDay = year;
arivalYear = monthOfYear;
arivalMonth = dayOfMonth;

应该是

arivalDay = dayOfMonth;
arivalYear = year;
arivalMonth = monthOfYear;