Set MinDate and MaxDate in DatePIcker

22,371

Solution 1

To set the min date two years before and max two years after today use the following code:

Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -2); // subtract 2 years from now
datePickerDialog.getDatePicker().setMinDate(c.getTimeInMillis());
c.add(Calendar.YEAR, 4); // add 4 years to min date to have 2 years after now
datePickerDialog.getDatePicker().setMaxDate(c.getTimeInMillis());

Solution 2

I believe this code really helps you to give the fix.

Here is the code for your fix -

private void showDateDailog() {

final DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) {

        year = selectedYear;
        month = selectedMonth;
        day = selectedDate;

      ((TextView) findViewById(R.id.textViewTORStartDate)).setText(new StringBuilder().append(day).append("/")
                    .append(month + 1).append("/").append(year));

    }
}, year, month, day);

final Calendar calendar = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
//Min date setting part
cal.set(Calendar.MONTH, mm);
cal.set(Calendar.DAY_OF_MONTH, dd);
cal.set(Calendar.YEAR, yy - 2);
datePickerDialog.setMinDate(cal.getTimeInMillis());
//Maximum date setting part
Calendar calen = Calendar.getInstance();
calen.set(Calendar.MONTH, mm);
calen.set(Calendar.DAY_OF_MONTH, dd);
calen.set(Calendar.YEAR, yy + 2);
datePickerDialog.setMaxDate(calen.getTimeInMillis());
datePickerDialog.show();
}

Solution 3

You can set MinDate and MaxDate for that you will need to use DatePicker class.

class MDatePickerDialog extends DatePickerDialog {
    MDatePickerDialog(Context c) {
        super(c, null, 2016, 11, 23);
        Date min = new Date(2018-1900, 4, 21);
        DatePicker p = getDatePicker();
        CalendarView cv = p.getCalendarView();
        long cur = cv.getDate();
        int d = cv.getFirstDayOfWeek();
        p.setMinDate(min.getTime());
        cv.setDate(cur + 1000L*60*60*24*40);
        cv.setFirstDayOfWeek((d + 1) % 7);
        cv.setDate(cur);
        cv.setFirstDayOfWeek(d);
    }
}

Hope this will help you.

Share:
22,371

Related videos on Youtube

user7108398
Author by

user7108398

Updated on July 05, 2022

Comments

  • user7108398
    user7108398 almost 2 years

    Creating app in which i am showing DatePicker.Now i want to set MinDate of DatePicker is previous two years and max date future two years only.Selection should be base on current date.Suppose current Date is 23/11/2016 so datepicker should show date till 23/11/2014 in DatePicker all the date should be disabled before the 23/11/2014.And when we click on Datepicker cursor should be on current date.Created DtaePicker

    private void showDateDailog() {
    
        final DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, new DatePickerDialog.OnDateSetListener() {
    
            @Override
            public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDate) {
    
                year = selectedYear;
                month = selectedMonth;
                day = selectedDate;
    
              ((TextView) findViewById(R.id.textViewTORStartDate)).setText(new StringBuilder().append(day).append("/")
                            .append(month + 1).append("/").append(year));
    
            }
        }, year, month, day);
        datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
        datePickerDialog.show();
    }
    
  • Jack Lynx
    Jack Lynx over 6 years
    What about dates before January 1, 1970 00:00:00 ?