【问题标题】:How to set maximum & minimum limits to date picker?如何设置日期选择器的最大和最小限制?
【发布时间】:2015-05-10 12:56:30
【问题描述】:

我在我的应用程序中使用了日期选择器。我希望我的日期选择器显示遵循一些限制的日期。我正在使用以下代码:-

@Override
    protected Dialog onCreateDialog(int id) {
        switch(id) {
            case DATE_PICKER_DIALOG:
                datePickerDialogDateSetListener = new DatePickerDialog.OnDateSetListener() {
                    public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) {
                        year = selectedYear;
                        month = selectedMonth;
                        date = selectedDate;

                        activitySignUpDateEditText.setText(new StringBuilder().append(date));
                        activitySignUpMonthEditText.setText(new StringBuilder().append(month + 1));
                        activitySignUpYearEditText.setText(new StringBuilder().append(year));
                    }
                };

                return new DatePickerDialog(this, datePickerDialogDateSetListener, year, month, date);

            default:
                return null;
        }
    } 

我希望日期选择器在某处显示距当前日期 18 年的最大日期和某处最小日期作为当前日期。我搜索了很多,但没有找到任何令人满意的答案。我知道日期选择器的 setMaxDate() 和 setMinDate() 方法,但是当我尝试使用它时,我无法在我的编辑文本上设置选定的日期。任何帮助都将是可观的。提前致谢。

【问题讨论】:

    标签: android max min android-datepicker


    【解决方案1】:

    您可以尝试替换此行:

    return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
    

    由那些:

    DatePickerDialog dpDialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
    DatePicker datePicker = dpDialog.getDatePicker();
    
    Calendar calendar = Calendar.getInstance();//get the current day
    datePicker.setMaxDate(calendar.getTimeInMillis());//set the current day as the max date
    return dpDialog;
    

    同样设置最短日期

    DatePickerDialog dpDialog = new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);
    DatePicker datePicker = dpDialog.getDatePicker();
    
    Calendar calendar = Calendar.getInstance();//get the current day
    datePicker.setMinDate(calendar.getTimeInMillis());//set the current day as the max date
    return dpDialog;
    

    【讨论】:

    • 这里的 pyear、pmonth 和 pday 是什么
    • 我可以设置下限,但无法设置自当前日期起 18 年后的上限。
    【解决方案2】:

    为了将 Max date 设置为 18 年前,下面的代码 sn-p 将完成这项工作:

    Calendar c = Calendar.getInstance();
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day = c.get(Calendar.DAY_OF_MONTH);
    DatePickerDialog dateDialog = new DatePickerDialog(this, datePickerListener, year - 18, month, day);
    
    //For setting minimum date as Current Date
    //dateDialog.getDatePicker().setMinDate(c.getTimeInMillis ());
    
    //For setting maximum date as 18 years back
    c.set(year - 18, month, day);
    dateDialog.getDatePicker().setMaxDate(c.getTimeInMillis());
    return dateDialog;
    

    由于 MaxDate 不能小于 MinDate,因此当 MaxDate 设置为 18 年前时,不应将 MinDate 设置为当前日期。

    希望它对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多