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 JVM -Duser.timezone
. 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 en el nivel de sistema operativo
Siga estos pasos para establecer la variable de entorno TZ
en el nivel de sistema operativo:
Identifique la zona horaria deseada. Las zonas horarias normalmente se especifican en el formato "Área/Ubicación", como "América/New_York" o "Europa/Londres".
Establezca la variable de entorno
TZ
mediante uno de los métodos siguientes:En los sistemas Unix/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 la consola de comandos o a través de la configuración del entorno:
set TZ=America/New_York
Reinicie la aplicación para que JVM pueda seleccionar la nueva configuración de zona horaria.
Ejemplo
En el ejemplo siguiente, 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 ejemplo siguiente se configura el contenedor para que use la zona horaria de America/New_York
estableciendo la variable de entorno TZ
e instalando el paquete de 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. Esta propiedad JVM tiene prioridad sobre la variable de entorno TZ
.
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/Location".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 ejemplo siguiente:java -Duser.timezone=America/New_York -jar myapp.jar
Ejemplo
En el ejemplo siguiente, 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 JVM -Duser.timezone
a otros sistemas y entornos. Tanto si ejecuta aplicaciones en plataformas en la nube, en máquinas virtuales (VM) como 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 las plataformas en la nube, configure la variable de entorno TZ
o la propiedad 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 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, lo que garantiza 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.