2014-04-11 11 views
5

Używam datepicker i chcę ustawić datę min na dzień dzisiejszy i maksymalną datę na dzień dzisiejszy.Datepicker daje czas nie pomiędzy wyjątkiem

Robię to tak:

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

Kiedy nie robię - 1000 potem dostać inny wyjątek:

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

To dlatego, data może nie być równa dzisiaj. Więc wydobywam 1000 ms.

Nie wiem, jak rozwiązać nowy wyjątek. Próbowałem policzyć + 1000 ms na maxDate, ale to nie rozwiązało.

EDIT:

tworzę CAL tak:

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

Odpowiedz

13

I rozwiązać problem w następujący sposób:

  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()); 

po prostu ustawić datę rozpoczęcia do minimum, a datą zakończenia do maksimum off tego dnia.

+0

To rozwiązuje mój problem, ale co, jeśli chcę utrzymać ten czas, czy muszę utworzyć kolejną instancję kalendarza i zarządzać nimi oddzielnie? – ANinJa

2

Wygląda MinDate jest wyższa niż MaxDate. Zgodnie z wyjątkiem.

+0

Tak, wiem o tym, ale nie wiem jak to naprawić. Cokolwiek próbuję, zawsze zawodzi. – user1007522

+0

twój minDate jest w 2015 roku, a nie w 2014 roku. Użyj "cal.getTimeInMillis()" dla setMinDate –

0

Spróbuj tego:

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

wypróbował to i nie ma znaczenia. – user1007522

+0

@ user1007522 Jak tworzysz swój kalendarz? – fRoStBiT

+0

sprawdź moją zredagowaną odpowiedź. – user1007522

Powiązane problemy