在从另一个日期选择器中选择的日期选择器中设置最小日期

Set minimum date in date picker selected from another date picker

我有两个日期选择器,一个是到达日期,另一个是出发日期。 我想要的是当用户打开出发日期选择器时,它应该有 +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();

但在这里我什至可以 select 到达日期之前的日期。 我做错了什么。

提前致谢

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

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

以下行可能不正确(您将所选年份分配给 arivalDay,将所选月份分配给 arivalYear,将所选日期分配给 arivalMonth

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

应该是:

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

同时 setDate(int day) 已弃用。

This method was deprecated in API level 1. Use Calendar.set(Calendar.DATE, day) instead.

出发最晚日期您设置的与到达日期相同。 而不是

min.setDate(arivalDay);

试试这个

min.setDate(arivalDay +1);

并且在到达侦听器中设置它而不是这个

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

应该是

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