2010-04-12 12 views

Antwort

13

Calendar.DAY_OF_YEAR ist der richtige Weg Tagen Sie

subtrahieren können auch ein Jahr subtrahieren (unter in Schaltjahre zu berücksichtigen) von

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

Eigentlich sind calendar.add (Calendar.DAY_OF_YEAR, n) und calendar.add (Calendar.DATE, n) identisch. Siehe http://stackoverflow.com/questions/2506082/add-more-than-30-days-with-calendars-add-method-in-java/2506096#2506096 –

1

ich mit ihm ein anderes macht nicht denken werden , aber ich würde Calendar.DAY_OF_YEAR als das Feld verwenden.

4

Das ist der richtige Weg, um Tage zu subtrahieren.

Beachten Sie, dass 365 Tage aufgrund von Schalttagen nicht immer ein Jahr entsprechen. calendar.add(Calendar.YEAR, -1) würde ein Jahr korrekt subtrahieren.

Sie können auch Joda Time-Bibliothek statt java.util.Date und java.util.Calendar verwenden. Joda Time ist eine viel bessere API für die Handhabung von Zeiten und Daten.

0

Wenn Sie streng subtrahieren 365 Tage versuchen, dann ja, das würde es tun. Wenn Sie jedoch Jahre rückwärts versuchen, funktioniert das aufgrund von Schaltjahren möglicherweise nicht.

0

Auschecken Veyder-time. Es ist eine einfache und mächtige Alternative zu java.util.Calendar und hat einfache Methoden zum Hinzufügen und Subtrahieren von Tagen und Jahren, neben vielen anderen Dingen.

Verwandte Themen