Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Konfigurowanie stref czasowych w języku Java

Strefy czasowe w języku Java można skonfigurować za pomocą różnych metod, umożliwiając aplikacjom działanie w odpowiednim kontekście strefy czasowej. Dwa typowe podejścia to ustawienie zmiennej środowiskowej TZ i określenie właściwości -Duser.timezoneJVM . Ten artykuł zawiera krótkie omówienie obu metod.

Ustawianie zmiennej środowiskowej TZ

Zmienna TZ środowiskowa to standardowy sposób ustawiania strefy czasowej dla aplikacji działających w systemach operacyjnych podobnych do unix. Po ustawieniu tej zmiennej maszyna wirtualna Java (JVM) pobiera ustawienie strefy czasowej podczas uruchamiania.

Ustawianie zmiennej środowiskowej TZ na poziomie systemu operacyjnego

Wykonaj następujące kroki, aby ustawić zmienną TZ środowiskową na poziomie systemu operacyjnego:

  1. Zidentyfikuj żądaną strefę czasową. Strefy czasowe są zwykle określane w formacie "Obszar/lokalizacja", na przykład "Ameryka/New_York" lub "Europa/Londyn".

  2. Ustaw zmienną TZ środowiskową przy użyciu jednej z następujących metod:

    • W systemach Unix/Linux użyj następującego polecenia, aby ustawić zmienną w terminalu lub w pliku konfiguracji powłoki — .bashrc, .bash_profile, .zshrci tak dalej:

      export TZ=America/New_York
      
    • W systemach Windows użyj następującego polecenia, aby ustawić zmienną w wierszu polecenia lub za pomocą ustawień środowiska systemowego:

      set TZ=America/New_York
      
  3. Uruchom ponownie aplikację, aby maszyny JVM mogły odebrać nowe ustawienie strefy czasowej.

Przykład

W poniższym przykładzie aplikacja myapp.jar działa w Europe/London strefie czasowej:

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

Ustawianie zmiennej środowiskowej TZ w pliku Dockerfile

Po uruchomieniu aplikacji Java w kontenerach można ustawić zmienną TZ środowiskową w pliku Dockerfile, aby upewnić się, że kontener działa w żądanej strefie czasowej.

Przykład pliku Dockerfile

Poniższy przykład konfiguruje kontener tak, aby używał America/New_York strefy czasowej, ustawiając zmienną TZ środowiskową i instalując tzdata pakiet:

# 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"]

Ustawianie właściwości JVM -Duser.timezone

Inną metodą konfigurowania strefy czasowej w języku Java jest określenie -Duser.timezone właściwości podczas uruchamiania maszyny wirtualnej JVM. Ta metoda jest niezależna od platformy i umożliwia ustawienie strefy czasowej bezpośrednio z wiersza polecenia lub w skryptach aplikacji.

Aby ustawić -Duser.timezone właściwość, wykonaj następujące kroki:

  1. Zidentyfikuj żądaną strefę czasową. Podobnie jak zmienna TZ środowiskowa, strefa czasowa jest określona w formacie "Obszar/lokalizacja".

  2. -Duser.timezone Ustaw właściwość, dodając ją do wiersza polecenia Java podczas uruchamiania aplikacji, jak pokazano w poniższym przykładzie:

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

Przykład

W poniższym przykładzie aplikacja myapp.jar działa w Asia/Tokyo strefie czasowej:

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

Inne systemy i środowiska

Zasady konfigurowania stref czasowych w języku Java można zastosować przy użyciu TZ zmiennej środowiskowej i -Duser.timezone właściwości JVM do innych systemów i środowisk. Niezależnie od tego, czy uruchamiasz aplikacje na platformach w chmurze, na maszynach wirtualnych, czy w różnych systemach aranżacji kontenerów, możesz użyć tych samych metod, aby zapewnić, że aplikacje Java działają w odpowiednim kontekście strefy czasowej.

Na platformach w chmurze skonfiguruj zmienną TZ środowiskową lub właściwość JVM w ramach skryptów wdrażania lub ustawień konfiguracji środowiska.

Na maszynach wirtualnych ustaw zmienną TZ środowiskową w środowisku maszyny wirtualnej lub użyj właściwości JVM w skryptach uruchamiania aplikacji.

W przypadku orkiestracji kontenerów użyj przykładu Dockerfile dla konteneryzowanych aplikacji, aby zapewnić dostępność i prawidłowe ustawienie danych strefy czasowej.

Postępując zgodnie z tymi zasadami, można osiągnąć spójną konfigurację strefy czasowej w różnych środowiskach wdrażania dla aplikacji Java.