tl; dr
LocalDate.now(ZoneId.of("America/Montreal"))
.minusDays(90)
java.time
Otras respuestas aquí son anticuados. La forma moderna es con las clases java.time.
LocalDate
La clase LocalDate
representa un valor de sólo fecha sin la hora del día y sin zona horaria.
Una zona horaria es crucial para determinar una fecha. Para cualquier momento dado, la fecha varía alrededor del mundo por zona. Por ejemplo, unos minutos después de la medianoche en Paris France es un nuevo día mientras aún está "ayer" en Montréal Québec.
ZoneId z = ZoneId.of("America/Montreal") ;
LocalDate today = LocalDate.now(z) ;
Luego puede agregar o restar días.
LocalDate ago090 = today.minusDays(90) ;
LocalDate ago120 = today.minusDays(120) ;
LocalDate ago160 = today.minusDays(160) ;
para generar una cadena en el formato estándar ISO 8601 de AAAA-MM-DD, llame toString
. Para otros formatos, busque Desbordamiento de pila para la clase DateTimeFormatter
para ver muchos ejemplos y discusiones.
String output = ago120.toString() ;
Sobre java.time
El marco java.time está incorporado en Java 8 y versiones posteriores. Estas clases suplantan a las viejas y problemáticas clases de fecha y hora legacy, como java.util.Date
, Calendar
, & SimpleDateFormat
. El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a java.time.
Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.
¿Dónde obtener las clases java.time?
- Java SE 8 y SE 9 y más tarde
- incorporado.
- Parte de la API estándar de Java con una implementación integrada.
- Java 9 agrega algunas características menores y correcciones.
- Java SE 6 y SE 7
- Gran parte de la funcionalidad de back-java.time está portado a Java 6 & 7 en ThreeTen-Backport.
- Android
- El proyecto ThreeTenABP adapta ThreeTen-Backport (mencionado anteriormente) para Android específicamente.
- Ver How to use….
El proyecto se extiende ThreeTen-Extra java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval
, YearWeek
, YearQuarter
y more.
¿Puede ser más específico sobre los errores y el código que los produjo? – ObscureRobot
posible duplicado de [¿Cómo restar X días de una fecha utilizando el calendario de Java?] (Http://stackoverflow.com/questions/212321/how-to-subtract-x-days-from-a-date-using-java -calendar) –