Ora CET a Giava

Hiten Kanwar 12 ottobre 2023
Ora CET a Giava

In tutto il mondo ci sono più di 190 paesi, dove ogni paese segue un certo fuso orario. Questi fusi orari fungono da regole cruciali per esprimere il tempo in modo molto conveniente ed efficace. Tuttavia, questi fusi orari possono rivelarsi inespliciti a causa di alcune variabili come l’ora legale.

Java ci ha fornito più classi che gestiscono i fusi orari. Con le nuove versioni di Java in arrivo, sono nate classi molto più estese e utili come ZoneId e ZoneOffset.

Con l’emergere di JSR-310, sono state aggiunte alcune API nuove e molto più produttive per la gestione dell’ora e dei fusi orari. ZoneId è stata una di queste classi aggiunte. È una rappresentazione di un fuso orario come Europe/Berlin.

La maggior parte degli offset fissi sono rappresentati da ZoneOffset. Possiamo assicurarci chiamando normalized() su qualsiasi ZoneId che un ID offset fisso sarà rappresentato come ZoneOffset.

La definizione IANA di CET dice che segue le regole del fuso orario dell’Europa centrale, che include sia l’estate che l’inverno.

Si dovrebbe capire che l’identificatore del fuso orario e il nome breve di tale identificatore sono due elementi diversi. Il nome può cambiare tra CET e CEST, ma l’identificatore è sempre fissato come CET.

Possiamo ottenere la funzionalità relativa al fuso orario CET utilizzando la funzione getRules(). Può trasmettere l’offset in un dato momento.

Vedere il seguente codice.

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

Produzione:

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

Un altro modo potrebbe essere quello di usare ZoneOffset.ofHours(1) invece di usare ZoneId.of("CET"). Possiamo ottenere le transizioni totali e le regole per la transizione usando getTransitions() e getTransitionRules().