Aracılığıyla paylaş


Java'da saat dilimlerini yapılandırma

Java'da saat dilimlerini çeşitli yöntemlerle yapılandırarak uygulamaların istenen saat dilimi bağlamında çalışmasına olanak sağlayabilirsiniz. İki yaygın yaklaşım, TZ ortam değişkenini ayarlamak ve -Duser.timezoneJVM özelliğini belirtmektir. Bu makalede her iki yönteme de kısa bir genel bakış sağlanır.

TZ ortam değişkenini ayarlama

TZ ortam değişkeni, Unix benzeri işletim sistemlerinde çalışan uygulamalar için saat dilimini ayarlamanın standart bir yoludur. Bu değişkeni ayarladığınızda Java Sanal Makinesi (JVM), başlangıç sırasında saat dilimi ayarını alır.

TZ ortam değişkenini işletim sistemi düzeyinde ayarlama

TZ ortam değişkenini işletim sistemi düzeyinde ayarlamak için aşağıdaki adımları kullanın:

  1. İstenen saat dilimini belirleyin. Saat dilimleri genellikle "Amerika/New_York" veya "Avrupa/Londra" gibi "Alan/Konum" biçiminde belirtilir.

  2. Aşağıdaki yöntemlerden birini kullanarak TZ ortam değişkenini ayarlayın:

    • Unix/Linux sistemlerinde, terminalde veya kabuk yapılandırma dosyanızda değişkeni ayarlamak için aşağıdaki komutu kullanın: .bashrc, .bash_profile, .zshrcve benzeri:

      export TZ=America/New_York
      
    • Windows sistemlerinde, komut isteminde veya sistem ortamı ayarları aracılığıyla değişkeni ayarlamak için aşağıdaki komutu kullanın:

      set TZ=America/New_York
      
  3. JVM'nin yeni saat dilimi ayarını alabilmesi için uygulamayı yeniden başlatın.

Örnek

Aşağıdaki örnekte, uygulama myapp.jarEurope/London saat diliminde çalışır:

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

Dockerfile'da TZ ortam değişkenini ayarlama

Kapsayıcılarda Java uygulamaları çalıştırdığınızda, kapsayıcının istenen saat diliminde çalıştığından emin olmak için Dockerfile içindeki TZ ortam değişkenini ayarlayabilirsiniz.

Dockerfile örneği

Aşağıdaki örnek, America/New_York ortam değişkenini ayarlayarak ve TZ paketini yükleyerek kapsayıcıyı tzdata saat dilimini kullanacak şekilde yapılandırır:

# 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 özelliğini -Duser.timezone ayarlama

Java'da saat dilimini yapılandırmanın başka bir yöntemi de JVM'yi başlatırken -Duser.timezone özelliğini belirtmektir. Bu yöntem platformdan bağımsızdır ve saat dilimini doğrudan komut satırından veya uygulama betiklerinden ayarlamaya olanak tanır. Bu JVM özelliği, TZortam değişkenine göre önceliklidir.

-Duser.timezone özelliğini ayarlamak için aşağıdaki adımları kullanın:

  1. İstenen saat dilimini belirleyin. TZ ortam değişkenine benzer şekilde, saat dilimi "Alan/Konum" biçiminde belirtilir.

  2. Aşağıdaki örnekte gösterildiği gibi uygulamayı başlatırken Java komut satırına ekleyerek -Duser.timezone özelliğini ayarlayın:

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

Örnek

Aşağıdaki örnekte, uygulama myapp.jarAsia/Tokyo saat diliminde çalışır:

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

Diğer sistemler ve ortamlar

TZ ortam değişkenini ve -Duser.timezone JVM özelliğini kullanarak Java'da saat dilimlerini yapılandırma ilkelerini diğer sistemlere ve ortamlara uygulayabilirsiniz. Uygulamaları bulut platformlarında, sanal makinelerde (VM) veya çeşitli kapsayıcı düzenleme sistemlerinde çalıştırdığınızda, Java uygulamalarınızın doğru saat dilimi bağlamında çalıştığından emin olmak için aynı yöntemleri kullanabilirsiniz.

Bulut platformlarında, dağıtım betikleriniz veya ortam yapılandırma ayarlarınız içinde TZ ortam değişkenini veya JVM özelliğini yapılandırın.

Sanal makinelerde, SANAL makinenizin ortamında TZ ortam değişkenini ayarlayın veya uygulama başlangıç betiklerinizde JVM özelliğini kullanın.

Kapsayıcı düzenleme kullanarak, kapsayıcılı uygulamalar için Dockerfile örneğini kullanın ve saat dilimi verilerinin kullanılabilir ve doğru ayarlandığından emin olun.

Bu ilkeleri izleyerek Java uygulamalarınız için farklı dağıtım ortamlarında tutarlı saat dilimi yapılandırması elde edebilirsiniz.