Restar días en un objeto de calendario

Posible duplicado:
¿Alguien sabe de una manera simple usando el calendario de Java para restar X días a una fecha?

Necesito menos 365 días en una fecha determinada (fecha dada)

Calendar calendar = Calendar.getInstance(); calendar.setTime(givenDate); calendar.add(Calendar.DATE, -365); 

Estoy en lo cierto

Calendar.DAY_OF_YEAR es la forma correcta de restar días

También puede restar un año (tomando en cuenta los años bisiestos) usando

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

Esa es la forma correcta de restar días.

Tenga en cuenta que 365 días no siempre equivale a un año debido a los días bisiestos. calendar.add(Calendar.YEAR, -1) restaría un año correctamente.

También es posible que desee utilizar Joda Time -library en lugar de java.util.Date y java.util.Calendar . Joda Time es una API mucho más agradable para manejar tiempos y fechas.

No creo que sea diferente, pero usaría Calendar.DAY_OF_YEAR como el campo.

Si estás tratando de restar estrictamente 365 días, entonces sí, eso lo haría. Sin embargo, si está intentando años atrás, es posible que no funcione debido a años bisiestos.

Echa un vistazo a Veyder-tiempo . Es una alternativa simple y poderosa a java.util.Calendar y tiene métodos simples para sumr y restar días y años, entre muchas otras cosas.