Hora CET en Java

Hiten Kanwar 12 octubre 2023
Hora CET en Java

En todo el mundo, hay más de 190 países, donde cada país sigue una determinada zona horaria. Estas zonas horarias actúan como reglas que son cruciales para expresar la hora de manera más conveniente y efectiva. Sin embargo, estas zonas horarias pueden resultar poco explícitas debido a ciertas variables como el horario de verano.

Java nos ha proporcionado múltiples clases que manejan zonas horarias. Con la llegada de nuevas versiones de Java, surgieron clases mucho más extensas y útiles como ZoneId y ZoneOffset.

Con la aparición de JSR-310, se agregaron algunas API nuevas y mucho más productivas para administrar el tiempo y las zonas horarias. ZoneId fue una de esas clases agregadas. Es una representación de una zona horaria como Europe/Berlin.

La mayoría de los desplazamientos fijos están representados por ZoneOffset. Podemos asegurarnos llamando a normalized() en cualquier ZoneId que un ID de desplazamiento fijo se representará como ZoneOffset.

La definición de IANA de CET dice que sigue las reglas de zona horaria de Europa Central, que incluye tanto los veranos como los inviernos.

Uno debe entender que el identificador de zona horaria y el nombre corto de ese identificador son dos elementos diferentes. El nombre puede cambiar entre CET y CEST, pero el identificador siempre se fija como CET.

Podemos obtener la funcionalidad relacionada con la zona horaria CET usando la función getRules(). Puede transmitir el desplazamiento en el momento dado.

Consulte el siguiente código.

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
  public static void main(String[] args) {
    ZoneId zone = ZoneId.of("CET");
    System.out.println("Zone Name: " + zone);
    System.out.println("Offset " + zone.getRules());
  }
}

Producción :

Zone Name: CET
Offset ZoneRules[currentStandardOffset=+01:00]

Otra forma podría ser utilizar ZoneOffset.ofHours(1) en lugar de utilizar ZoneId.of("CET"). Podemos obtener las transiciones totales y las reglas para la transición usando getTransitions() y getTransitionRules().

Artículo relacionado - Java Time