Partager via


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 :

  1. 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 ».

  2. 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
      
  3. 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 :

  1. Identifiez le fuseau horaire souhaité. Comme pour la variable d’environnement TZ, le fuseau horaire est spécifié au format « Area/Location ».

  2. 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.