Question: How to Disable future dates in Android date picker

Java Code :

```
mExpireDate.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                // To show current date in the datepicker
                final Calendar mcurrentDate = Calendar.getInstance();
                int mYear = mcurrentDate.get(Calendar.YEAR);
                int mMonth = mcurrentDate.get(Calendar.MONTH);
                int mDay = mcurrentDate.get(Calendar.DAY_OF_MONTH);

                 DatePickerDialog mDatePicker = new DatePickerDialog(
                        EventRegisterActivity.this, new OnDateSetListener() {
                            public void onDateSet(DatePicker datepicker,
                                    int selectedyear, int selectedmonth,
                                    int selectedday) {

                                mcurrentDate.set(Calendar.YEAR, selectedyear);
                                mcurrentDate.set(Calendar.MONTH, selectedmonth);
                                mcurrentDate.set(Calendar.DAY_OF_MONTH,
                                        selectedday);
                                SimpleDateFormat sdf = new SimpleDateFormat(
                                        getResources().getString(
                                                R.string.date_card_formate),
                                        Locale.US);

                                mExpireDate.setText(sdf.format(mcurrentDate
                                        .getTime()));
                            }
                        }, mYear, mMonth, mDay);

                mDatePicker.setTitle(getResources().getString(
                        R.string.alert_date_select));
                mDatePicker.show();
            }
        });

```

How to do it?

Answer: 
Following code help you to disable future dates:   

Declare calendar variable globally:

```
private Calendar myCalendar = Calendar.getInstance();

```

Put following code in onCreate method:

```
DatePickerDialog.OnDateSetListener dateListener = 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);
        updateLabel();
    }

};

```

On the button click put the following code:

```
DatePickerDialog datePickerDialog=new DatePickerDialog(getActivity(), dateListener, myCalendar
                    .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                    myCalendar.get(Calendar.DAY_OF_MONTH));

               //following line to restrict future date selection     
            datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
            datePickerDialog.show();

```
If you using material design Datepicker :

```
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(this,
            calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH));
    datePickerDialog.show(getFragmentManager(), "datepicker");
    datePickerDialog.setMaxDate(calendar);

```