Hora CET em Java

Hiten Kanwar 12 outubro 2023
Hora CET em Java

Em todo o mundo, existem mais de 190 países, onde cada país segue um determinado fuso horário. Esses fusos horários atuam como regras que são cruciais para expressar o tempo de maneira muito conveniente e eficaz. No entanto, esses fusos horários podem ser inexplicáveis ​​devido a certas variáveis, como o horário de verão.

Java nos forneceu várias classes que lidam com fusos horários. Com novas versões do Java surgindo, ele veio com classes muito mais extensas e úteis, como ZoneId e ZoneOffset.

Com o surgimento da JSR-310, algumas APIs novas e muito mais produtivas foram adicionadas para o gerenciamento de fusos horários. ZoneId foi uma dessas classes adicionadas. É uma representação de um fuso horário como Europe/Berlin.

A maioria dos deslocamentos fixos são representados por ZoneOffset. Podemos garantir, chamando normalized() em qualquer ZoneId, que um ID de deslocamento fixo será representado como ZoneOffset.

A definição de CET da IANA diz que ela segue as regras de fuso horário da Europa Central, que inclui tanto o verão quanto o inverno.

Deve-se entender que o identificador de fuso horário e o nome abreviado desse identificador são dois elementos diferentes. O nome pode mudar entre CET e CEST, mas o identificador é sempre fixado como CET.

Podemos obter a funcionalidade relacionada ao fuso horário CET usando a função getRules(). Ele pode transmitir o deslocamento em um determinado momento.

Veja o seguinte 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());
  }
}

Resultado:

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

Outra maneira pode ser usar ZoneOffset.ofHours(1) em vez de usar ZoneId.of("CET"). Podemos obter o total de transições e regras para a transição usando getTransitions() e getTransitionRules().