如何停止日期选择器对话框日期以设置以前的日期。它应该只允许超过系统当前日期日期

时间:2012-01-10 07:23:10

标签: android

大家好,我们提前感谢..    我在我的应用程序中要求我有一个日期选择器来设置日期。现在我想限制日期选择器将日期设置为系统当前日期,但不低于系统当前日期。怎么样....? 任何人都可以帮助我....以及如何使用日期选择器日期验证系统当前日期。

3 个答案:

答案 0 :(得分:3)

在这种情况下,您可以扩展DatePickerDialog并自行实现OnDateChanged,每次日期更改时都会调用它,并将DatePicker和新年,月和日作为参数获取值,所以你可以检查那个日期是否过去,在这种情况下抛出错误(使用Toast或其他)并调用DatePicker.updateDate()来设置正确的值(以便DatePicker始终处于一致状态)。

此外,您可以拨打DatePicker.init(year, monthOfYear, dayOfMonth, onDateChangedListener);,然后就可以传递

onDateChangedListener implementation without having to extend DatePickerDialog.

编辑:(我从不尝试这个,但我认为它可以完成你的工作..)

DatePicker

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;
        }