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

标签 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();

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

提前致谢。

最佳答案

您可能为 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.

关于android - 在从另一个日期选择器中选择的日期选择器中设置最小日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34545335/

相关文章:

mysql - 选择最小日期和最大日期的其他列值

android - android 4.4 的标签和半透明状态栏/导航出现问题

java - AlertDialog ...没有确定按钮,只有取消

c# - DatePicker 自定义模板内部留下一个白色框

javascript - 时区偏移导致日期错误

javascript - 如何更改剑道日期选择器的最小日期: Jquery

android - 在 Android Studio 中编辑外部库

Android Webview 加载其他 URL

javascript - Jquery ui datepicker年份滚动条在拖动时无法直观更新

javascript - minDate:0,在日期选择器中不起作用