Heure CET à Java

Hiten Kanwar 12 octobre 2023
Heure CET à Java

Dans le monde entier, il y a plus de 190 pays, où chaque pays suit un certain fuseau horaire. Ces fuseaux horaires agissent comme des règles cruciales pour exprimer l’heure de manière pratique et efficace. Cependant, ces fuseaux horaires peuvent s’avérer inexplicables en raison de certaines variables telles que l’heure d’été.

Java nous a fourni plusieurs classes qui gèrent les fuseaux horaires. Avec les nouvelles versions de Java à venir, il a proposé des classes beaucoup plus étendues et utiles telles que ZoneId et ZoneOffset.

Avec l’émergence de JSR-310, de nouvelles API beaucoup plus productives ont été ajoutées pour gérer l’heure et les fuseaux horaires. ZoneId était l’une de ces classes ajoutées. Il s’agit d’une représentation d’un fuseau horaire tel que Europe/Berlin.

La plupart des décalages fixes sont représentés par ZoneOffset. Nous pouvons nous assurer en appelant normalized() sur n’importe quel ZoneId qu’un ID de décalage fixe sera représenté comme ZoneOffset.

La définition IANA du CET indique qu’il suit les règles de fuseau horaire de l’Europe centrale, qui incluent à la fois l’heure d’été et l’heure d’hiver.

Il faut comprendre que l’identifiant de fuseau horaire et le nom abrégé de cet identifiant sont deux éléments différents. Le nom peut changer entre CET et CEST, mais l’identifiant est toujours fixé comme CET.

Nous pouvons obtenir les fonctionnalités liées au fuseau horaire CET en utilisant la fonction getRules(). Il peut transmettre le décalage à l’instant donné.

Voir le code suivant.

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

Production:

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

Une autre façon peut être d’utiliser ZoneOffset.ofHours(1) plutôt que d’utiliser ZoneId.of("CET"). Nous pouvons obtenir le nombre total de transitions et de règles pour la transition en utilisant getTransitions() et getTransitionRules().