如何在DatePickerDialog.OnDateSetListener上设置最小和最大日期

时间:2019-03-26 14:30:20

标签: android datepicker

我正在尝试使用此DatePickerDialog设置用户注册的最小日期(从现在开始-12年)和最大日期(从现在开始+90年)。

我在这里查看了一些代码,但是没有找到如何处理我的代码的方法。只是其他一些示例,但使用不同的方式来获取日期。

private EditText etBirthdate;    
Calendar myCalendar;
DatePickerDialog.OnDateSetListener date;

myCalendar = Calendar.getInstance();
myCalendar.set(Calendar.YEAR, (myCalendar.get(Calendar.YEAR) - 12));

updateDatePicker();

date = new DatePickerDialog.OnDateSetListener() {

   @Override
   public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
       // TODO Auto-generated method stub
       myCalendar.set(Calendar.YEAR, year);
       myCalendar.set(Calendar.MONTH, monthOfYear);
       myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
       updateDatePicker();
   }

};



etBirthdate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        new DatePickerDialog(getActivity(), date, myCalendar
          .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
           myCalendar.get(Calendar.DAY_OF_MONTH)).show();
         }
});

private void updateDatePicker() {
        String country = Locale.getDefault().getCountry();
        String myFormat = "dd/MM/yy";

        if (country.equalsIgnoreCase("US")) {
            myFormat = "MM/dd/yy";
        }

        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

        etBirthdate.setText(sdf.format(myCalendar.getTime()));
}

1 个答案:

答案 0 :(得分:0)

使用DatePicker的setMaxDatesetMinDate函数。

    private int pYear;
    private int pMonth;
    private int pDay;
    private DatePickerDialog.OnDateSetListener dateSetListener;

    final Calendar c = Calendar.getInstance();
    pYear = c.get(Calendar.YEAR);
    pMonth = c.get(Calendar.MONTH);
    pDay = c.get(Calendar.DAY_OF_MONTH);
    dateSetListener = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                              int dayOfMonth) {

        }

    };

    DatePickerDialog dialog = new DatePickerDialog(this, dateSetListener, pYear, pMonth, pDay);

    Calendar maxValueCalendar = Calendar.getInstance();
    maxValueCalendar.set(Calendar.YEAR , pYear + 90);
    dialog.getDatePicker().setMaxDate(maxValueCalendar.getTimeInMillis());

    Calendar minValueCalendar = Calendar.getInstance();
    minValueCalendar.set(Calendar.YEAR , pYear - 12);
    dialog.getDatePicker().setMinDate(minValueCalendar.getTimeInMillis());
    dialog.show();
相关问题