大家好,我们提前感谢.. 我在我的应用程序中要求我有一个日期选择器来设置日期。现在我想限制日期选择器将日期设置为系统当前日期,但不低于系统当前日期。怎么样....? 任何人都可以帮助我....以及如何使用日期选择器日期验证系统当前日期。
答案 0 :(得分:3)
在这种情况下,您可以扩展DatePickerDialog
并自行实现OnDateChanged
,每次日期更改时都会调用它,并将DatePicker和新年,月和日作为参数获取值,所以你可以检查那个日期是否过去,在这种情况下抛出错误(使用Toast或其他)并调用DatePicker.updateDate()来设置正确的值(以便DatePicker始终处于一致状态)。强>
此外,您可以拨打DatePicker.init(year, monthOfYear, dayOfMonth, onDateChangedListener);
,然后就可以传递
onDateChangedListener implementation without having to extend DatePickerDialog.
编辑:(我从不尝试这个,但我认为它可以完成你的工作..)
setMinDate(long minDate)
设置此NumberPicker支持的最小日期,自1970年1月1日00:00:00起,在getDefault()时区内以毫秒为单位。
示例:
DatePickerDialog dialog = new DatePickerDialog(this, mDateSetListener, cyear, cmonth, cday);
dialog.getDatePicker().setMinDate(new Date());
答案 1 :(得分:2)
使用setMinDate类的CalendarView函数。在这里,您可以设置日期,以毫秒为单位。要使用setMaxDate
预防将来的日期使用getDatePicker获取日期选择器并按上述说明设置日历视图。
答案 2 :(得分:2)
private int myear; //Declare these three variables in MainActivity and call showDialog(1)
private int mmonth;
private int mday;
final Calendar myCalendar= Calendar.getInstance();
private void setCurrentDateOnView() { //Call this method before showDialog
myear = myCalendar.get(Calendar.YEAR);
mmonth = myCalendar.get(Calendar.MONTH);
mday = myCalendar.get(Calendar.DAY_OF_MONTH);
}
protected Dialog onCreateDialog(int id) {
switch (id) {
case 1:
DatePickerDialog startDate = new DatePickerDialog(this, datePickerListener, myear,mmonth,
mday){
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
}
};
myCalendar.set(myear, mmonth, mday);
long startTime = myCalendar.getTimeInMillis();
startDate.getDatePicker().setMinDate(startTime - 1000);
return startDate;
}
return null;
}