web-dev-qa-db-fra.com

Comment définir la date DatePicker minimale à la date du jour

Je veux définir la date minimale que l'utilisateur peut choisir dans un DatePicker à la date du jour. J'ai essayé ceci:

DatePicker datePicker = (DatePicker) findViewById(R.id.event_date);
datePicker.setMinDate(System.currentTimeMillis());

Cela me donne l'exception suivante:

12-01 12:23:31.226: E/AndroidRuntime(10311): Caused by: Java.lang.IllegalArgumentException: fromDate: Sat Dec 01 12:23:31 EST 2012 does not precede toDate: Sat Dec 01 12:23:31 EST 2012

Comment puis-je faire cela?

53
gsingh2011

L'erreur indique que vous ne pouvez pas définir la date minimale sur exactement maintenant. Essayez de soustraire une seconde:

datePicker.setMinDate(System.currentTimeMillis() - 1000);

À partir du code source, la date minimale doit être antérieure à la date actuelle, et non la même:

if (date.before(mMinDate)) {
    throw new IllegalArgumentException("fromDate: " + mMinDate.getTime()
            + " does not precede toDate: " + date.getTime());
}

Il vous suffit donc de soustraire suffisamment de temps à partir de maintenant (System.currentTimeMillis()) et de passer date.before(mMinDate).

146
Sam

Si vous ne souhaitez pas utiliser une boîte de dialogue personnalisée. Utilisez ce code à une seule ligne: 

datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis()); 
11
Nikhil Jain

Vérifiez le code Android DatePickerDialog et les codes minimum et date maximale.

Voici les exemples

final 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 dpd = new DatePickerDialog(getActivity(),AlertDialog.THEME_TRADITIONAL,this,year, month, day);  

    //Get the DatePicker instance from DatePickerDialog  
    DatePicker dp = dpd.getDatePicker();  
    //Set the DatePicker minimum date selection to current date  
    dp.setMinDate(c.getTimeInMillis());//get the current day  
    //dp.setMinDate(System.currentTimeMillis() - 1000);// Alternate way to get the current day  

    //Add 6 days with current date  
    c.add(Calendar.DAY_OF_MONTH,6);  

    //Set the maximum date to select from DatePickerDialog  
    dp.setMaxDate(c.getTimeInMillis());  
    //Now DatePickerDialog have 7 days range to get selection any one from those dates 
6
Saiful Alam

Ajouter cette ligne à votre fragment DatePicker définira la date minimale comme date actuelle et désactivera les mois précédents.

datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
4
TechInsect

Cela a parfaitement fonctionné pour moi. facile et gentil.

DatePickerDialog dialog = new DatePickerDialog(this, this,
              Calendar.YEAR,Calendar.MONTH,
                Calendar.DAY_OF_MONTH);

        dialog.getDatePicker().setMinDate(Calendar.getInstance().getTimeInMillis());
        dialog.show();
4
Satyajit Das
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis()); 

OR

DatePickerDialog dialog = new DatePickerDialog(this, this,
          Calendar.YEAR,Calendar.MONTH,
            Calendar.DAY_OF_MONTH);

    dialog.getDatePicker().setMinDate(Calendar.getInstance().getTimeInMillis());
    dialog.show();
0
Brinda Rathod

Cela peut vous aider.

Calendar cal=Calendar.getInstance();

int year=cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH);
int day=cal.get(Calendar.DAY_OF_MONTH);
int hour=cal.get(Calendar.HOUR_OF_DAY);
int min=cal.get(Calendar.MINUTE);

datePicker.updateDate(year, month, day);

timePicker.setCurrentHour(hour);
timePicker.setCurrentMinute(min);
0
Ali Imran

Essaye ça

datePicker.setMinDate(new GregorianCalendar.getTimeInMillis());
0
Robin Chander