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:
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".
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
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
:
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".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.