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 JVM -Duser.timezone
. Ten artykuł zawiera krótkie omówienie obu metod.
Ustawianie zmiennej środowiskowej TZ
Zmienna środowiskowa TZ
to standardowy sposób ustawiania strefy czasowej dla aplikacji działających w systemach operacyjnych podobnych do systemu 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ą środowiskową TZ
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ą środowiskową
TZ
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.
Przykład
W poniższym przykładzie aplikacja myapp.jar działa w strefie czasowej Europe/London
:
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ą środowiskową TZ
w pliku Dockerfile, aby upewnić się, że kontener działa w żądanej strefie czasowej.
Przykład pliku Dockerfile
Poniższy przykład umożliwia skonfigurowanie kontenera do używania strefy czasowej America/New_York
przez ustawienie zmiennej środowiskowej TZ
i zainstalowanie pakietu tzdata
:
# 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 właściwości -Duser.timezone
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. Ta właściwość JVM ma pierwszeństwo przed zmienną środowiskową TZ
.
Aby ustawić właściwość -Duser.timezone
, wykonaj następujące czynności:
Zidentyfikuj żądaną strefę czasową. Podobnie jak
TZ
zmiennej środowiskowej, strefa czasowa jest określona w formacie "Obszar/lokalizacja".Ustaw właściwość
-Duser.timezone
, 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 strefie czasowej Asia/Tokyo
:
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 zmiennej środowiskowej TZ
oraz właściwości -Duser.timezone
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 chmurowych skonfiguruj zmienną środowiskową TZ
lub właściwość JVM w ramach skryptów wdrażania lub ustawień konfiguracji środowiska.
Na maszynach wirtualnych ustaw zmienną środowiskową TZ
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.