Compartir a través de


Configuración de zonas horarias en Java

Puede configurar zonas horarias en Java a través de varios métodos, lo que permite que las aplicaciones funcionen en el contexto de zona horaria deseado. Dos enfoques comunes son establecer la variable de entorno TZ y especificar la propiedad -Duser.timezone de JVM. En este artículo se proporciona una breve introducción a ambos métodos.

Establecimiento de la variable de entorno TZ

La variable de entorno TZ es una manera estándar de establecer la zona horaria para las aplicaciones que se ejecutan en sistemas operativos similares a Unix. Al establecer esta variable, la máquina virtual Java (JVM) recoge la configuración de zona horaria durante el inicio.

Establecimiento de la variable de entorno TZ a nivel de sistema operativo

Siga estos pasos para establecer la variable de entorno TZ a nivel de sistema operativo:

  1. Identifique la zona horaria deseada. Las zonas horarias normalmente se especifican en el formato "Área/Ubicación", como "Estados_Unidos/Nueva_York" o "Europa/Londres".

  2. Establezca la variable de entorno TZ mediante uno de los siguientes métodos:

    • En los sistemas Unix o Linux, use el siguiente comando para establecer la variable en el terminal o en el archivo de configuración del shell: .bashrc, .bash_profile, .zshrc, etc.:

      export TZ=America/New_York
      
    • En los sistemas Windows, use el siguiente comando para establecer la variable en el símbolo del sistema o a través de la configuración del entorno del sistema:

      set TZ=America/New_York
      
  3. Reinicie la aplicación para que JVM pueda seleccionar la nueva configuración de zona horaria.

Ejemplo

En el siguiente ejemplo, la aplicación myapp.jar se ejecuta en la zona horaria Europe/London:

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

Establecimiento de la variable de entorno TZ en un Dockerfile

Al ejecutar aplicaciones Java en contenedores, puede establecer la variable de entorno TZ dentro del Dockerfile para asegurarse de que el contenedor se ejecuta en la zona horaria deseada.

Ejemplo de Dockerfile

En el siguiente ejemplo se configura el contenedor para que use la zona horaria de America/New_York estableciendo la variable de entorno TZ e instalando el paquete 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"]

Establecimiento de la propiedad -Duser.timezone de JVM

Otro método para configurar la zona horaria en Java es especificar la propiedad -Duser.timezone al iniciar la JVM. Este método es independiente de la plataforma y permite establecer la zona horaria directamente desde la línea de comandos o dentro de scripts de aplicación.

Siga estos pasos para establecer la propiedad -Duser.timezone:

  1. Identifique la zona horaria deseada. De forma similar a la variable de entorno TZ, la zona horaria se especifica en el formato "Area/Ubicación".

  2. Establezca la propiedad -Duser.timezone agregándola a la línea de comandos de Java al iniciar la aplicación, como se muestra en el siguiente ejemplo:

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

Ejemplo

En el siguiente ejemplo, la aplicación myapp.jar se ejecuta en la zona horaria Asia/Tokyo:

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

Otros sistemas y entornos

Puede aplicar los principios de configuración de zonas horarias en Java mediante la variable de entorno TZ y la propiedad -Duser.timezone de JVM a otros sistemas y entornos. Tanto si ejecuta aplicaciones en plataformas en la nube, dentro de máquinas virtuales (VM) o en varios sistemas de orquestación de contenedores, puede usar los mismos métodos para asegurarse de que las aplicaciones Java funcionan en el contexto de zona horaria correcto.

En plataformas en la nube, configure la variable de entorno TZ o la propiedad de JVM dentro de los scripts de implementación o las opciones de configuración del entorno.

En las máquinas virtuales, establezca la variable de entorno TZ en el entorno de la máquina virtual o use la propiedad de JVM en los scripts de inicio de la aplicación.

Con la orquestación de contenedores, use el ejemplo de Dockerfile para las aplicaciones en contenedores, garantizando que los datos de zona horaria están disponibles y configurados correctamente.

Al seguir estos principios, puede lograr una configuración coherente de zona horaria en distintos entornos de implementación para las aplicaciones Java.