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.timezone
JVM . Ten artykuł zawiera krótkie omówienie obu metod.
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.
Wykonaj następujące kroki, aby ustawić zmienną TZ
środowiskową na poziomie systemu operacyjnego:
Zidentyfikuj żądaną strefę czasową. Strefy czasowe są zwykle określane w formacie "Obszar/lokalizacja", na przykład "Ameryka/New_York" lub "Europa/Londyn".
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
,.zshrc
i 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
Uruchom ponownie aplikację, aby maszyny JVM mogły odebrać nowe ustawienie strefy czasowej.
W poniższym przykładzie aplikacja myapp.jar działa w Europe/London
strefie czasowej:
export TZ=Europe/London
java -jar myapp.jar
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.
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"]
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:
Zidentyfikuj żądaną strefę czasową. Podobnie jak zmienna
TZ
środowiskowa, strefa czasowa jest określona w formacie "Obszar/lokalizacja".-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
W poniższym przykładzie aplikacja myapp.jar działa w Asia/Tokyo
strefie czasowej:
java -Duser.timezone=Asia/Tokyo -jar myapp.jar
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.