2010-04-12 14 views

risposta

13

Calendar.DAY_OF_YEAR è il modo corretto per sottrarre giorni

È anche possibile sottrarre un anno (tenendo in considerazione gli anni bisestili) utilizzando

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

In realtà calendar.add (Calendar.DAY_OF_YEAR, n) e calendar.add (Calendar.DATE, n) sono identici. Vedi http://stackoverflow.com/questions/2506082/add-more-than-30-days-with-calendars-add-method-in-java/2506096#2506096 –

4

Questo è il modo corretto per sottrarre giorni.

Si noti che 365 giorni non sempre equivale a un anno a causa dei giorni bisestili. calendar.add(Calendar.YEAR, -1) dovrebbe sottrarre correttamente un anno.

È inoltre possibile utilizzare Joda Time -library invece di java.util.Date e java.util.Calendar. Joda Time è un'API molto più carina per la gestione di orari e date.

0

Se si sta tentando di strettamente sottrarre 365 giorni, allora sì, che lo farei. Tuttavia, se stai cercando anni indietro, potrebbe non funzionare a causa degli anni bisestili.

0

Check out Veyder-time. È un'alternativa semplice e potente a java.util.Calendar e ha metodi semplici per aggiungere e sottrarre giorni e anni, tra molte altre cose.