148 votes

Comment définir un fuseau horaire JVM correctement

Je suis en train d'exécuter un programme java, mais il prend une valeur par défaut GMT, fuseau horaire, au lieu d'un OS défini le fuseau horaire. Ma version du jdk est de 1,5 et le système d'exploitation est Windows Server Enterprise (2007)

Windows dispose d'un centre de fuseau horaire spécifié, mais quand je lance le programme suivant, il me donne un temps moyen de greenwich.

import java.util.Calendar;

public class DateTest
{
    public static void main(String[] args)
    {
        Calendar now = Calendar.getInstance();
        System.out.println(now.getTimeZone());
        System.out.println(now.getTime());
    }
}

Voici la sortie

sun.util.calendar.ZoneInfo[id="GMT",
offset=0,
dstSavings=0,
useDaylight=false,
transitions=0,
lastRule=null]
Mon Mar 22 13:46:45 GMT 2010

Veuillez noter que je ne veux pas de régler le fuseau horaire à partir de l'application. Je veux que le fuseau horaire utilisé par la JVM doit être celui spécifié dans l'OS. (Je ne parviens pas à trouver ce problème avec les autres serveurs qui ont la version 1.4 de jdk et Microsoft Server 2003).

Toutes les pensées seraient très appréciées.

240voto

Bozhidar Batsov Points 23298

Vous pouvez transmettre à la machine virtuelle Java ce paramètre -Duser.timezone , par exemple -Duser.timezone="Europe/Sofia" et cela devrait faire l'affaire. La définition de la variable d’environnement TZ peut également aider.

24voto

WN4yhihiY Points 41

La réponse acceptée ci-dessus:

 -Duser.timezone="Europe/Sofia" 
 

Cela n'a pas fonctionné pour moi exactement. Je n'ai réussi à changer mon fuseau horaire que lorsque je n'avais pas de guillemets autour des paramètres:

 -Duser.timezone=Europe/Sofia
 

12voto

VolkanT Points 129

Sous Windows 7 et pour JDK6, je devais ajouter -Duser.timezone="Europe/Sofia" à la variable système JAVA_TOOL_OPTIONS située sous "Mon ordinateur => Propriétés => Paramètres système avancés => Variables d'environnement".

Si vous avez déjà défini une autre propriété pour JAVA_TOOL_OPTIONS, ajoutez simplement un espace, puis insérez votre chaîne de propriété.

6voto

MichalSv Points 21

Si vous utilisez Maven :

 mvn -Dexec.args="-Duser.timezone=Europe/Sofia ....."
 

0voto

Dave Points 1

Dans win7, si vous souhaitez définir le fuseau horaire correct comme paramètre dans JRE, vous devez modifier le fichier deployment.properties stocké dans le chemin c:\users\%username%\appdata\locallow\sun\java\deployment ajoutant la chaîne deployment.javaws.jre.1.args=-Duser.timezone\= my_time_zone

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X