tl; dr
LocalDate.now() // Determine today’s date.
.plusMonths(3) // Add three months.
java.time
El enfoque moderno usa clases de java.time.
La clase LocalDate
representa un valor de fecha solamente sin 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.
Si no se especifica la zona horaria, la JVM aplica implícitamente su zona horaria predeterminada actual. Ese valor predeterminado puede cambiar en cualquier momento, por lo que sus resultados pueden variar. Es mejor especificar su zona horaria deseada/esperada explícitamente como un argumento.
Especifique un proper time zone name en el formato de continent/region
, como America/Montreal
, Africa/Casablanca
, o Pacific/Auckland
.Nunca use la abreviatura de 3-4 letras como EST
o IST
ya que son no zonas horarias verdaderas, no estandarizadas, y ni siquiera únicas (!).
ZoneId z = ZoneId.of("America/Montreal");
LocalDate today = LocalDate.now(z);
Agregue tres meses, dejando que java.time haga los cálculos.
LocalDate threeMonthsLater = today.plusMonths(3) ;
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 de legacy, como java.util.Date
, Calendar
, & SimpleDateFormat
.
El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a las clases 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, Java 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 Java SE 7
- Gran parte de la funcionalidad de back-java.time está portado a Java 6 & 7 en ThreeTen-Backport.
- Android
- Las versiones posteriores de las implementaciones de haces de Android de las clases java.time.
- Para Android anterior, el proyecto ThreeTenABP se adapta a ThreeTen-Backport (mencionado anteriormente). Ver How to use ThreeTenABP….
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.
BTW, ¿Qué es un Kurosawa? –
Según Wikipedia, es un sake elaborado en Saku, Nagano, Japón. –