2014-04-11 8 views
5

Sto usando un DatePicker e voglio impostare la data minima per oggi e la data massima per oggi un anno avanti.Datepicker dà il tempo non tra l'eccezione

faccio questo tipo:

datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000); 
      cal.add(Calendar.YEAR, 1); 
      datePickerDialog.getDatePicker().setMaxDate(cal.getTimeInMillis()); 

Quando non faccio - 1000 allora ottengo un'altra eccezione:

java.lang.IllegalArgumentException: fromDate: Sat Apr 11 23:59:59 CEST 2015 does not precede toDate: Sat Apr 11 08:24:19 CEST 2015 

thats perché la data non può essere uguale a oggi. Quindi estraggo 1000 ms.

Non so come risolvere la nuova eccezione. Ho provato a contare + 1000 ms su maxDate ma questo non lo ha risolto.

EDIT:

Creo il mio cal in questo modo:

cal = Calendar.getInstance(); 
     datePickerDialog = new DatePickerDialog(getActivity(), this, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE)); 

risposta

13

ho risolto il problema nel modo seguente:

  cal.set(Calendar.HOUR_OF_DAY, cal.getMinimum(Calendar.HOUR_OF_DAY)); 
      cal.set(Calendar.MINUTE, cal.getMinimum(Calendar.MINUTE)); 
      cal.set(Calendar.SECOND, cal.getMinimum(Calendar.SECOND)); 
      cal.set(Calendar.MILLISECOND, cal.getMinimum(Calendar.MILLISECOND)); 
      datePickerDialog.getDatePicker().setMinDate(cal.getTimeInMillis()); 
      cal.add(Calendar.YEAR, 1); 
      cal.set(Calendar.HOUR_OF_DAY, cal.getMaximum(Calendar.HOUR_OF_DAY)); 
      cal.set(Calendar.MINUTE, cal.getMaximum(Calendar.MINUTE)); 
      cal.set(Calendar.SECOND, cal.getMaximum(Calendar.SECOND)); 
      cal.set(Calendar.MILLISECOND, cal.getMaximum(Calendar.MILLISECOND)); 
      datePickerDialog.getDatePicker().setMaxDate(cal.getTimeInMillis()); 

ho appena impostato la data di inizio alla data di fine al massimo fuori quel giorno minimo e massimo.

+0

questo risolve il mio problema, ma cosa succede se voglio mantenere il tempo anche devo creare un'altra istanza di calendario e gestirla separatamente? – ANinJa

2

Sembra MinDate è superiore MaxDate. Come per l'eccezione.

+0

Sì, lo so, ma non so come risolvere questo problema. Qualunque cosa provi, fallisce sempre. – user1007522

+0

il tuo minDate è nel 2015 anziché 2014. usa 'cal.getTimeInMillis()' per setMinDate –

0

Prova questo:

cal.set(Calendar.HOUR_OF_DAY, 0); 
    cal.set(Calendar.MINUTE, 0); 
    cal.set(Calendar.SECOND, 0); 
    cal.set(Calendar.MILLISECOND, 0); 
    datePickerDialog.getDatePicker().setMinDate(cal.getTimeInMillis()); 
    cal.add(Calendar.YEAR, 1); 
    datePickerDialog.getDatePicker().setMaxDate(cal.getTimeInMillis()); 
+1

provato questo e non importa. – user1007522

+0

@ user1007522 Come si crea il calendario? – fRoStBiT

+0

controlla la mia risposta modificata. – user1007522

Problemi correlati