Partilhar via


Configurar fusos horários em Java

Você pode configurar fusos horários em Java usando vários métodos, permitindo que os aplicativos operem no contexto do fuso horário desejado. Duas abordagens comuns são definir a variável de ambiente TZ e especificar a propriedade JVM -Duser.timezone. Este artigo fornece uma breve visão geral dos dois métodos.

Definição da variável de ambiente TZ

A variável de ambiente TZ é uma maneira padrão de definir o fuso horário para aplicativos em execução em sistemas operacionais semelhantes ao Unix. Quando você define essa variável, a JVM (Máquina Virtual Java) seleciona a configuração de fuso horário durante a inicialização.

Definir a variável de ambiente TZ no nível do sistema operacional

Use as seguintes etapas para definir a variável de ambiente TZ no nível do sistema operacional:

  1. Identifique o fuso horário desejado. Os fusos horários normalmente são especificados no formato "Área/Localização", como "América/Nova_York" ou "Europa/Londres".

  2. Defina a variável de ambiente TZ usando um dos seguintes métodos:

    • Em sistemas Unix/Linux, use o seguinte comando para definir a variável no terminal ou no arquivo de configuração do shell – .bashrc, .bash_profile, .zshrc e assim por diante:

      export TZ=America/New_York
      
    • Em sistemas Windows, use o seguinte comando para definir a variável no prompt de comando ou por meio de configurações de ambiente do sistema:

      set TZ=America/New_York
      
  3. Reinicie o aplicativo para que a JVM possa selecionar a nova configuração de fuso horário.

Exemplo

No exemplo a seguir, o aplicativo myapp.jar é executado no fuso horário Europe/London:

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

Definição da variável de ambiente TZ em um Dockerfile

Ao executar aplicativos Java em contêineres, você pode definir a variável de ambiente TZ no Dockerfile para garantir que o contêiner seja executado no fuso horário desejado.

Exemplo do Dockerfile

O exemplo a seguir configura o contêiner para usar o fuso horário America/New_York definindo a variável de ambiente TZ e instalando o pacote 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"]

Definindo a propriedade JVM -Duser.timezone

Outro método para configurar o fuso horário em Java é especificar a propriedade -Duser.timezone ao iniciar a JVM. Esse método é independente de plataforma e permite definir o fuso horário diretamente da linha de comando ou dos scripts do aplicativo.

Use as seguintes etapas para definir a propriedade -Duser.timezone:

  1. Identifique o fuso horário desejado. Semelhante à variável de ambiente TZ, o fuso horário é especificado no formato "Área/Localização".

  2. Defina a propriedade -Duser.timezone adicionando-a à linha de comando Java ao iniciar o aplicativo, conforme mostrado no exemplo a seguir:

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

Exemplo

No exemplo a seguir, o aplicativo myapp.jar é executado no fuso horário Asia/Tokyo:

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

Outros sistemas e ambientes

Você pode aplicar os princípios de configuração de fusos horários em Java usando a variável de ambiente TZ e a propriedade JVM -Duser.timezone a outros sistemas e ambientes. Se você executar aplicativos em plataformas de nuvem, em VMs (máquinas virtuais) ou em vários sistemas de orquestração de contêiner, poderá usar os mesmos métodos para garantir que seus aplicativos Java operem no contexto de fuso horário correto.

Em plataformas de nuvem, defina a variável de ambiente TZ ou a propriedade JVM dentro dos scripts de implantação ou das configurações de ambiente.

Em máquinas virtuais, defina a variável de ambiente TZ no ambiente da VM ou use a propriedade JVM nos scripts de inicialização do aplicativo.

Com a orquestração de contêineres, use o exemplo do Dockerfile para aplicativos em contêineres, garantindo que os dados de fuso horário estejam disponíveis e sejam definidos corretamente.

Seguindo esses princípios, você pode obter uma configuração de fuso horário consistente em diferentes ambientes de implantação para seus aplicativos Java.