Configurer des fuseaux horaires en Java
Vous pouvez configurer des fuseaux horaires en Java via différentes méthodes, ce qui permet aux applications de fonctionner dans le contexte de fuseau horaire souhaité. Deux approches courantes définissent la variable d’environnement TZ
et spécifient la propriété JVM -Duser.timezone
. Cet article fournit une brève vue d’ensemble des deux méthodes.
Définition de la variable d’environnement TZ
La variable d’environnement TZ
est un moyen standard de définir le fuseau horaire des applications s’exécutant sur des systèmes d’exploitation de type Unix. Lorsque vous définissez cette variable, la machine virtuelle Java (JVM) récupère le paramètre de fuseau horaire au démarrage.
Définir la variable d’environnement TZ au niveau du système d’exploitation
Procédez comme suit pour définir la variable d’environnement TZ
au niveau du système d’exploitation :
Identifiez le fuseau horaire souhaité. Les fuseaux horaires sont généralement spécifiés au format « Area/Location », par exemple « America/New_York » ou « Europe/Londres ».
Définissez la variable d’environnement
TZ
à l’aide de l’une des méthodes suivantes :Sur les systèmes Unix/Linux, utilisez la commande suivante pour définir la variable dans le terminal ou dans votre fichier de configuration de l’interpréteur de commandes -
.bashrc
,.bash_profile
,.zshrc
, et ainsi de suite :export TZ=America/New_York
Sur les systèmes Windows, utilisez la commande suivante pour définir la variable dans l’invite de commandes ou via les paramètres d’environnement système :
set TZ=America/New_York
Redémarrez l’application afin que la machine virtuelle JVM puisse récupérer le nouveau paramètre de fuseau horaire.
Exemple
Dans l’exemple suivant, l’application myapp.jar s’exécute dans le fuseau horaire Europe/London
:
export TZ=Europe/London
java -jar myapp.jar
Définition de la variable d’environnement TZ dans un fichier Dockerfile
Lorsque vous exécutez des applications Java dans des conteneurs, vous pouvez définir la variable d’environnement TZ
dans le fichier Dockerfile pour vous assurer que le conteneur s’exécute dans le fuseau horaire souhaité.
Exemple Dockerfile
L’exemple suivant configure le conteneur pour utiliser le fuseau horaire America/New_York
en définissant la variable d’environnement TZ
et en installant le package 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"]
Définition de la propriété JVM -Duser.timezone
Une autre méthode pour configurer le fuseau horaire en Java consiste à spécifier la propriété -Duser.timezone
lors du démarrage de la machine virtuelle JVM. Cette méthode est indépendante de la plateforme et permet de définir le fuseau horaire directement à partir de la ligne de commande ou dans les scripts d’application. Cette propriété JVM est prioritaire sur la variable d’environnement TZ
.
Pour définir la propriété -Duser.timezone
, procédez comme suit :
Identifiez le fuseau horaire souhaité. Comme pour la variable d’environnement
TZ
, le fuseau horaire est spécifié au format « Area/Location ».Définissez la propriété
-Duser.timezone
en l’ajoutant à la ligne de commande Java lors du démarrage de l’application, comme illustré dans l’exemple suivant :java -Duser.timezone=America/New_York -jar myapp.jar
Exemple
Dans l’exemple suivant, l’application myapp.jar s’exécute dans le fuseau horaire Asia/Tokyo
:
java -Duser.timezone=Asia/Tokyo -jar myapp.jar
Autres systèmes et environnements
Vous pouvez appliquer les principes de configuration des fuseaux horaires en Java à l’aide de la variable d’environnement TZ
et de la propriété -Duser.timezone
JVM à d’autres systèmes et environnements. Que vous exécutiez des applications sur des plateformes cloud, au sein de machines virtuelles ou dans différents systèmes d’orchestration de conteneurs, vous pouvez utiliser les mêmes méthodes pour vous assurer que vos applications Java fonctionnent dans le contexte de fuseau horaire approprié.
Sur les plateformes cloud, configurez la variable d’environnement TZ
ou la propriété JVM au sein de vos scripts de déploiement ou paramètres de configuration d’environnement.
Sur les machines virtuelles, définissez la variable d’environnement TZ
dans l’environnement de votre machine virtuelle ou utilisez la propriété JVM dans les scripts de démarrage de votre application.
Avec l’orchestration de conteneur, utilisez l’exemple Dockerfile pour les applications conteneurisées, ce qui garantit que les données de fuseau horaire sont disponibles et correctement définies.
En suivant ces principes, vous pouvez obtenir une configuration de fuseau horaire cohérente dans différents environnements de déploiement pour vos applications Java.