Java에서 표준 시간대 구성
다양한 방법을 통해 Java에서 표준 시간대를 구성할 수 있으므로 애플리케이션이 원하는 표준 시간대 컨텍스트에서 작동할 수 있습니다. 두 가지 일반적인 방법은 TZ
환경 변수를 설정하고 JVM 속성 -Duser.timezone
지정하는 것입니다. 이 문서에서는 두 방법 모두에 대한 간략한 개요를 제공합니다.
TZ 환경 변수 설정
TZ
환경 변수는 Unix와 유사한 운영 체제에서 실행되는 애플리케이션의 표준 시간대를 설정하는 표준 방법입니다. 이 변수를 설정하면 Java Virtual Machine(JVM)이 시작 시 표준 시간대 설정을 가져옵니다.
OS 수준에서 TZ 환경 변수 설정
다음 단계를 사용하여 운영 체제 수준에서 TZ
환경 변수를 설정합니다.
원하는 표준 시간대를 식별합니다. 표준 시간대는 일반적으로 "지역/위치" 형식(예: "America/New_York" 또는 "Europe/London")으로 지정됩니다.
다음 방법 중 하나를 사용하여
TZ
환경 변수를 설정합니다.Unix/Linux 시스템에서 다음 명령을 사용하여 터미널 또는 셸 구성 파일(
.bashrc
,.bash_profile
,.zshrc
등)에서 변수를 설정합니다.export TZ=America/New_York
Windows 시스템에서 다음 명령을 사용하여 명령 프롬프트 또는 시스템 환경 설정을 통해 변수를 설정합니다.
set TZ=America/New_York
JVM이 새 표준 시간대 설정을 선택할 수 있도록 애플리케이션을 다시 시작합니다.
예
다음 예제에서 애플리케이션 myapp.jarEurope/London
표준 시간대에서 실행됩니다.
export TZ=Europe/London
java -jar myapp.jar
Dockerfile에서 TZ 환경 변수 설정
컨테이너에서 Java 애플리케이션을 실행하는 경우 Dockerfile 내에서 TZ
환경 변수를 설정하여 컨테이너가 원하는 표준 시간대에서 실행되도록 할 수 있습니다.
Dockerfile 예제
다음 예제에서는 TZ
환경 변수를 설정하고 tzdata
패키지를 설치하여 America/New_York
표준 시간대를 사용하도록 컨테이너를 구성합니다.
# 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"]
JVM 속성 -Duser.timezone
설정
Java에서 표준 시간대를 구성하는 또 다른 방법은 JVM을 시작할 때 -Duser.timezone
속성을 지정하는 것입니다. 이 메서드는 플랫폼 독립적이며 명령줄 또는 애플리케이션 스크립트 내에서 직접 표준 시간대를 설정할 수 있습니다. 이 JVM 속성은 환경 변수 TZ
우선합니다.
다음 단계를 사용하여 -Duser.timezone
속성을 설정합니다.
원하는 표준 시간대를 식별합니다.
TZ
환경 변수와 마찬가지로 표준 시간대는 "영역/위치" 형식으로 지정됩니다.다음 예제와 같이 애플리케이션을 시작할 때 Java 명령줄에 추가하여
-Duser.timezone
속성을 설정합니다.java -Duser.timezone=America/New_York -jar myapp.jar
예시
다음 예제에서 애플리케이션 myapp.jarAsia/Tokyo
표준 시간대에서 실행됩니다.
java -Duser.timezone=Asia/Tokyo -jar myapp.jar
기타 시스템 및 환경
TZ
환경 변수 및 -Duser.timezone
JVM 속성을 사용하여 Java에서 표준 시간대를 구성하는 원칙을 다른 시스템 및 환경에 적용할 수 있습니다. 클라우드 플랫폼, VM(가상 머신) 또는 다양한 컨테이너 오케스트레이션 시스템에서 애플리케이션을 실행하든 동일한 방법을 사용하여 Java 애플리케이션이 올바른 표준 시간대 컨텍스트에서 작동하도록 할 수 있습니다.
클라우드 플랫폼에서 배포 스크립트 또는 환경 구성 설정 내에서 TZ
환경 변수 또는 JVM 속성을 구성합니다.
가상 머신에서 VM 환경에서 TZ
환경 변수를 설정하거나 애플리케이션 시작 스크립트에서 JVM 속성을 사용합니다.
컨테이너 오케스트레이션을 사용하여 컨테이너화된 애플리케이션에 Dockerfile 예제를 사용할 때, 시간대 데이터가 사용 가능하며 올바르게 설정되어 있는지 확인해야 합니다.
이러한 원칙에 따라 Java 애플리케이션에 대한 다양한 배포 환경에서 일관된 표준 시간대 구성을 달성할 수 있습니다.