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:
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".
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
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
:
Identifique o fuso horário desejado. Semelhante à variável de ambiente
TZ
, o fuso horário é especificado no formato "Área/Localização".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.