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.timezone
JVM . Questo articolo offre una breve panoramica di entrambi i metodi.
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.
Per impostare la TZ
variabile di ambiente a livello di sistema operativo, seguire questa procedura:
Identificare il fuso orario desiderato. I fusi orari vengono in genere specificati nel formato "Area/Posizione", ad esempio "America/New_York" o "Europe/London".
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
.zshrc
e 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
Riavviare l'applicazione in modo che JVM possa selezionare la nuova impostazione del fuso orario.
Nell'esempio seguente l'applicazione myapp.jar viene eseguita nel Europe/London
fuso orario:
export TZ=Europe/London
java -jar myapp.jar
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.
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"]
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:
Identificare il fuso orario desiderato. Analogamente alla
TZ
variabile di ambiente, il fuso orario viene specificato nel formato "Area/Posizione".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
Nell'esempio seguente l'applicazione myapp.jar viene eseguita nel Asia/Tokyo
fuso orario:
java -Duser.timezone=Asia/Tokyo -jar myapp.jar
È 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.