Leggere in inglese

Condividi tramite


Configurare i fusi orari in Java

È possibile configurare i fusi orari in Java tramite vari metodi, consentendo alle applicazioni di operare nel contesto di fuso orario desiderato. Due approcci comuni riguardano l'impostazione della TZ variabile di ambiente e la specifica della proprietà -Duser.timezoneJVM . Questo articolo offre una breve panoramica di entrambi i metodi.

Impostazione della variabile di ambiente TZ

La TZ variabile di ambiente è un modo standard per impostare il fuso orario per le applicazioni in esecuzione in sistemi operativi simili a Unix. Quando si imposta questa variabile, la macchina virtuale Java (JVM) preleva l'impostazione del fuso orario durante l'avvio.

Impostare la variabile di ambiente TZ a livello di sistema operativo

Per impostare la TZ variabile di ambiente a livello di sistema operativo, seguire questa procedura:

  1. Identificare il fuso orario desiderato. I fusi orari vengono in genere specificati nel formato "Area/Posizione", ad esempio "America/New_York" o "Europe/London".

  2. Impostare la TZ variabile di ambiente usando uno dei metodi seguenti:

    • Nei sistemi Unix/Linux usare il comando seguente per impostare la variabile nel terminale o nel file di configurazione della shell , .bashrc, .bash_profile.zshrce così via:

      export TZ=America/New_York
      
    • Nei sistemi Windows usare il comando seguente per impostare la variabile nel prompt dei comandi o tramite le impostazioni dell'ambiente di sistema:

      set TZ=America/New_York
      
  3. Riavviare l'applicazione in modo che JVM possa selezionare la nuova impostazione del fuso orario.

Esempio

Nell'esempio seguente l'applicazione myapp.jar viene eseguita nel Europe/London fuso orario:

export TZ=Europe/London
java -jar myapp.jar

Impostazione della variabile di ambiente TZ in un Dockerfile

Quando si eseguono applicazioni Java in contenitori, è possibile impostare la TZ variabile di ambiente all'interno del Dockerfile per assicurarsi che il contenitore venga eseguito nel fuso orario desiderato.

Esempio di Dockerfile

L'esempio seguente configura il contenitore per l'uso del America/New_York fuso orario impostando la TZ variabile di ambiente e installando il tzdata pacchetto:

# Use a base image with Java installed
FROM mcr.microsoft.com/openjdk/jdk:21-mariner

# Set the timezone environment variable
ENV TZ=America/New_York

# Set the working directory
WORKDIR /app

# Copy the application JAR file to the container
COPY myapp.jar /app/myapp.jar

# Run the application
CMD ["java", "-jar", "myapp.jar"]

Impostazione della proprietà JVM -Duser.timezone

Un altro metodo per configurare il fuso orario in Java consiste nel specificare la proprietà all'avvio -Duser.timezone della JVM. Questo metodo è indipendente dalla piattaforma e abilita l'impostazione del fuso orario direttamente dalla riga di comando o negli script dell'applicazione.

Per impostare la -Duser.timezone proprietà, seguire questa procedura:

  1. Identificare il fuso orario desiderato. Analogamente alla TZ variabile di ambiente, il fuso orario viene specificato nel formato "Area/Posizione".

  2. Impostare la -Duser.timezone proprietà aggiungendola alla riga di comando Java all'avvio dell'applicazione, come illustrato nell'esempio seguente:

    java -Duser.timezone=America/New_York -jar myapp.jar
    

Esempio

Nell'esempio seguente l'applicazione myapp.jar viene eseguita nel Asia/Tokyo fuso orario:

java -Duser.timezone=Asia/Tokyo -jar myapp.jar

Altri sistemi e ambienti

È possibile applicare i principi di configurazione dei fusi orari in Java usando la TZ variabile di ambiente e la -Duser.timezone proprietà JVM ad altri sistemi e ambienti. Sia che si eseguano applicazioni su piattaforme cloud, all'interno di macchine virtuali (VM) o in vari sistemi di orchestrazione dei contenitori, è possibile usare gli stessi metodi per garantire che le applicazioni Java funzionino nel contesto di fuso orario corretto.

Nelle piattaforme cloud configurare la variabile di ambiente o la TZ proprietà JVM all'interno degli script di distribuzione o delle impostazioni di configurazione dell'ambiente.

Nelle macchine virtuali impostare la TZ variabile di ambiente nell'ambiente della macchina virtuale o usare la proprietà JVM negli script di avvio dell'applicazione.

Con l'orchestrazione dei contenitori, usare l'esempio Dockerfile per le applicazioni in contenitori, assicurando che i dati del fuso orario siano disponibili e impostati correttamente.

Seguendo questi principi, è possibile ottenere una configurazione coerente del fuso orario in diversi ambienti di distribuzione per le applicazioni Java.