Tag Archives: Java 8

Nueva API para fechas y tiempo en Java 8

Este post es un resumen rápido de lo que nos podemos encontrar en la nueva API de manipulación de fechas y tiempo de Java 8.

Esta API es mucho más avanzada y potente que sus antecesores y tiene como objetivo facilitar la manipulación de fechas y horas y resolver los múltiples problemas y malentendidos que causaba la tradicional API de Java (Calendar, Date, etc.) especialmente con las horas en diferentes zonas horarias, etc.

Dentro de la nueva API, que se encuentra principalmente en el paquete java.time, podemos encontrar las siguientes clases:

1. Clock

Representa el tiempo del sistema. Tiene información sobre la zona horaria en la que nos encontramos. Puede ser usado para acceder al tiempo en milisegundos (desde el 1 de enero de 1970) o para obtener diferentes instantes de tiempo para crear diferentes representaciones del mismo en diferentes zonas horarios o cronologías.

 

2. Instant

Representa un instante en la línea temporal del reloj (Clock). Esta siempre en UTC. Puede ser usado como una representación universal de tiempo o para obtener otras representaciones del mismo (pero requeriría de zona horaria). También puede usarase para obtener instancias de Date por motivos de compatibilidad con códigos antiguos (con la zona horaria local).

 

3. ZonedDateTime

Es una representacion de la fecha y el tiempo con información de la zona horaria completa.

 

4. OffsetDate, OffsetTime, OffsetDateTime

Representaciones de fecha, hora y fecha y hora respectivamente con información del desplezamiento de horas dentro de la zona horaria correspondiente (pero sin información sobre el nombre de la zona, por ejemplo).

 

5. LocalDate, LocalTime, LocalDateTime

Representación de fecha, hora y fecha y hora respectivamente sin información sobre la zona horaria. Es la forma preferida de representación y la recomendada si no se requieren datos sobre las zonas horarias.

 

6. ZoneId

Representación de las zonas horarias.

 

7. DateTimeFormatter

Formateador de fechas y horas para parsear, transformar u obtener las mismas en diferentes formatos.

 

8. Period

Representa un intervalo de tiempo concreto (mínimo un día). Se pueden usar en las operaciones con fechas (plusXXX(), minusXXX()).

 

9. Duration

Igual que los Period pero en este caso también admiten horas, minutos, segundos, etc.

 

Se puede encontrar más información sobre la API de tiempo de Java 8 en los siguientes enlaces:

http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html
https://docs.oracle.com/javase/tutorial/datetime/iso/overview.html
https://docs.oracle.com/javase/tutorial/datetime/index.html