2010-04-12 11 views

Odpowiedz

13

Calendar.DAY_OF_YEAR jest właściwy sposób, aby odjąć dni

Można również odjąć roku (biorąc w celu uwzględnienia lata przestępne) za pomocą

Calendar calendar = Calendar.getInstance(); 
calendar.setTime(givenDate); 
calendar.add(Calendar.YEAR, -1); 
+2

Faktycznie calendar.add (Calendar.DAY_OF_YEAR, n) i calendar.add (Calendar.DATE, n) są identyczne. Zobacz http://stackoverflow.com/questions/2506082/add-more-than-30-days-with-calendars-add-method-in-java/2506096#2506096 –

4

To jest poprawny sposób odejmowania dni.

Należy pamiętać, że 365 dni nie zawsze jest równe jeden rok z powodu dni przestępnych. calendar.add(Calendar.YEAR, -1) odejmowałby jeden rok poprawnie.

Możesz także użyć Joda Time -library zamiast java.util.Date i java.util.Calendar. Joda Time to znacznie przyjemniejsze API do obsługi czasu i dat.

0

Jeśli próbujesz ściśle odjąć 365 dni, a następnie tak, że by to zrobić. Jednakże, jeśli próbujesz lat wstecz, to może nie działać ze względu na lata przestępne.

0

Zapoznaj się z Veyder-time. Jest prostym i potężnym alternatywą dla java.util.Calendar i ma proste metody dodawania i odejmowania zarówno dni, jak i lat, a także wiele innych rzeczy.