在从另一个日期选择器中选择的日期选择器中设置最小日期
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 到达日期之前的日期。
我做错了什么。
提前致谢
您可能为 arivalDay
、arivalMonth
和 arivalYear
分配了错误的值。
在您的到达日期选择器中,检查您的 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;
我有两个日期选择器,一个是到达日期,另一个是出发日期。 我想要的是当用户打开出发日期选择器时,它应该有 +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 到达日期之前的日期。 我做错了什么。
提前致谢
您可能为 arivalDay
、arivalMonth
和 arivalYear
分配了错误的值。
在您的到达日期选择器中,检查您的 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;