Sobes.tech
Junior

¿Qué es ZonedDateTime?

sobes.tech AI

Respuesta de la IA

ZonedDateTime — es una clase del paquete java.time que representa una fecha y hora con una desplazamiento correcto desde UTC* y la zona horaria asociada. Considera las reglas de cambio a horario de verano y otras particularidades de la zona horaria específica.

A diferencia de OffsetDateTime, que solo almacena el desplazamiento desde UTC, ZonedDateTime mantiene una referencia a un objeto ZoneId, que representa la zona horaria, permitiendo realizar operaciones aritméticas con el tiempo considerando los cambios horarios a lo largo del año.

Características principales:

  • Combinación: Une fecha, hora y zona horaria.
  • Precisión: Considera las reglas de cambio a horario de verano (DST) y otros cambios dentro de la zona.
  • Inmutable: Los objetos ZonedDateTime son inmutables, al igual que otras clases de java.time.

Ejemplo de creación:

// Crear un ZonedDateTime para un momento específico en una zona específica
ZonedDateTime dateTimeInLondon = ZonedDateTime.of(2023, 10, 26, 10, 30, 0, 0, ZoneId.of("Europe/London"));
System.out.println(dateTimeInLondon);

// Obtener el ZonedDateTime actual en la zona del sistema
ZonedDateTime now = ZonedDateTime.now();
System.out.println(now);

Usos:

  • Representar eventos vinculados a un lugar y tiempo específicos (por ejemplo, la hora de inicio de un concierto en una ciudad concreta).
  • Realizar cálculos entre puntos en el tiempo en diferentes zonas horarias considerando las reglas de DST.
  • Trabajar con sistemas externos o bases de datos que requieran especificar la zona horaria.

Comparación con otras clases:

Clase Fecha Hora Desplazamiento desde UTC Zona horaria Considera DST
LocalDateTime No No No
OffsetDateTime No Parcialmente
ZonedDateTime