Konfigurera tidszoner i Java
Du kan konfigurera tidszoner i Java via olika metoder, vilket gör att program kan användas i önskad tidszonskontext. Två vanliga metoder är att ange TZ
miljövariabeln och ange JVM-egenskapen -Duser.timezone
. Den här artikeln innehåller en kort översikt över båda metoderna.
Ange TZ-miljövariabeln
Miljövariabeln TZ
är ett standard sätt att ange tidszonen för program som körs på Unix-liknande operativsystem. När du ställer in den här variabeln hämtar Java Virtual Machine (JVM) tidszonsinställningen under starten.
Ange TZ-miljövariabeln på os-nivå
Använd följande steg för att ange TZ
miljövariabeln på operativsystemnivå:
Identifiera önskad tidszon. Tidszoner anges vanligtvis i formatet "Area/Location", till exempel "America/New_York" eller "Europe/London".
Ange
TZ
miljövariabeln med någon av följande metoder:I Unix/Linux-system använder du följande kommando för att ange variabeln i terminalen eller i gränssnittskonfigurationsfilen –
.bashrc
,.bash_profile
,.zshrc
och så vidare:export TZ=America/New_York
I Windows-system använder du följande kommando för att ange variabeln i kommandotolken eller via systemmiljöinställningar:
set TZ=America/New_York
Starta om programmet så att JVM kan hämta den nya tidszonsinställningen.
Exempel
I följande exempel körs programmet myapp.jar i Europe/London
tidszon:
export TZ=Europe/London
java -jar myapp.jar
Ange TZ-miljövariabeln i en Dockerfile
När du kör Java-program i containrar kan du ange TZ
miljövariabeln i Dockerfile för att säkerställa att containern körs i önskad tidszon.
Dockerfile-exempel
I följande exempel konfigureras containern att använda America/New_York
tidszon genom att ange TZ
miljövariabeln och installera tzdata
-paketet:
# 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"]
Ange JVM-egenskapen -Duser.timezone
En annan metod för att konfigurera tidszonen i Java är att ange egenskapen -Duser.timezone
när JVM startas. Den här metoden är plattformsoberoende och aktiverar inställning av tidszonen direkt från kommandoraden eller i programskript. Den här JVM-egenskapen har företräde framför miljövariabeln TZ
.
Använd följande steg för att ange egenskapen -Duser.timezone
:
Identifiera önskad tidszon. På samma sätt som miljövariabeln
TZ
anges tidszonen i formatet "Område/plats".Ange egenskapen
-Duser.timezone
genom att lägga till den på Java-kommandoraden när du startar programmet, som du ser i följande exempel:java -Duser.timezone=America/New_York -jar myapp.jar
Exempel
I följande exempel körs programmet myapp.jar i Asia/Tokyo
tidszon:
java -Duser.timezone=Asia/Tokyo -jar myapp.jar
Andra system och miljöer
Du kan använda principerna för att konfigurera tidszoner i Java med hjälp av TZ
miljövariabeln och -Duser.timezone
JVM-egenskapen för andra system och miljöer. Oavsett om du kör program på molnplattformar, på virtuella datorer eller i olika containerorkestreringssystem kan du använda samma metoder för att säkerställa att dina Java-program fungerar i rätt tidszonskontext.
På molnplattformar konfigurerar du TZ
miljövariabeln eller JVM-egenskapen i dina distributionsskript eller miljökonfigurationsinställningar.
På virtuella datorer anger du miljövariabeln TZ
i den virtuella datorns miljö eller använder JVM-egenskapen i programstartskripten.
Med containerorkestrering använder du Dockerfile-exemplet för containerbaserade program, vilket säkerställer att tidszonsdata är tillgängliga och korrekt inställda.
Genom att följa dessa principer kan du uppnå konsekvent tidszonskonfiguration i olika distributionsmiljöer för dina Java-program.