Dela via


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å:

  1. Identifiera önskad tidszon. Tidszoner anges vanligtvis i formatet "Area/Location", till exempel "America/New_York" eller "Europe/London".

  2. 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, .zshrcoch 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
      
  3. 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:

  1. Identifiera önskad tidszon. På samma sätt som miljövariabeln TZ anges tidszonen i formatet "Område/plats".

  2. 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.