IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Problème TimeZone GMT


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 117
    Par défaut Problème TimeZone GMT
    Bonjour pour avoir une cohérence dans une BDD j’aimerais mettre toute les date au même format.

    Je procède comme ceci mais je ne pige pas bien pourquoi ça ne marche pas .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    GregorianCalendar d = (GregorianCalendar) o;
    GregorianCalendar dTz = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
    dTz.setTimeInMillis(d.getTimeInMillis());
    Timestamp time = new Timestamp(dTz.getTimeInMillis());
    this.preInstruction.setObject(i,time,Types.TIMESTAMP);
    Si quelqu'un a une autre solution ?

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Les méthodes setTimeInMillis() et getTimeInMillis() retournent toujours le temps écoulé en UTC (UTC est un synonyme de GMT).
    La TimeZone d'un Calendar ne changera donc rien si tu ne manipules pas les champs (HOUR, DAY, etc.) de ce Calendar.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 117
    Par défaut
    merci pour ton aide
    j'ai fait quelque test avec par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    GregorianCalendar d = (GregorianCalendar) o;
    d.setTimeZone(TimeZone.getDefault());
    System.out.println("1-h:"+d.get(Calendar.HOUR_OF_DAY));
    GregorianCalendar dTz = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
    System.out.println("2-h:"+dTz.get(Calendar.HOUR_OF_DAY));
    dTz.set(d.get(Calendar.YEAR), d.get(Calendar.MONTH), d.get(Calendar.DATE), d.get(Calendar.HOUR_OF_DAY), d.get(Calendar.MINUTE), d.get(Calendar.SECOND));
    System.out.println("3-h:"+dTz.get(Calendar.HOUR_OF_DAY));
    Timestamp time = new Timestamp(d.getTimeInMillis());
    System.out.println("4-h:"+time.getHours());
    Je trouve ceci en heures

    1-h:15 // Heur sans modification de l'obj 'd' (exacte)
    2-h:13 // Heur réel du gregorian calendar avec le timezone GMT vide (exact)
    3-h:15 //Affectation de leur de l'obj qui ne convertir pas la date et le fuseaux horaire n'est pas respecter
    4-h:17 // et enfin l’action Timestamp time = new Timestamp(d.getTimeInMillis()); rajoute 2 heures ( je ne sais pas pourquoi )

    mon but étant de ramener l'obj "d" (gregorianCalendar) qui peut être de fuseaux horaires différents au GMT dans le l'obj "time"(Timestamp)

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 117
    Par défaut
    Encore un petit test incompréensible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    GregorianCalendar d = (GregorianCalendar) o;
    d.setTimeZone(TimeZone.getDefault());
    System.out.println("1-h:"+d.get(Calendar.HOUR_OF_DAY)+" tz:"+d.getTimeZone().getAvailableIDs());
    d.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println("2-h:"+d.get(Calendar.HOUR_OF_DAY)+" tz:"+d.getTimeZone().getAvailableIDs());
    Timestamp time = new Timestamp(d.getTimeInMillis());
    System.out.println("3-h:"+time.getHours());
    me donne

    1-h:15 (ok)
    2-h:13 (ok)
    3-h:15 pk ????
    le d.getTimeInMillis() redonne l'heur en GMT+2:00 mais pk ??? ou c'est le Timestamp qui a un problème cependant il n'y a pas d’option de TimeZone dessus.

  5. #5
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Par défaut
    Parce que le getHours() de Timestamp travaille toujours avec la "local time zone". Mais ce n'est pas vraiment une bonne solution, c'est pour ça que cette méthode est dépréciée et que la classe Calendar a été créée.

    Sinon dis toi qu'en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Timestamp(d.getTimeInMillis())
    tu auras toujours le temps en UTC quelque soit la time zone de ton calendar.

    La time zone n'est là que pour déterminer comment afficher l'heure, mais la valeur ne change pas.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 117
    Par défaut
    aie !
    le problème est peut être plus grave vue que ma machine est en GMT+2 et j'ai 16 heur a l'horloge et le résultat de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new Timestamp(d.getTimeInMillis())
    m'affiche également 16heures ....
    et dans le bdd ça enregistre bien 16heur ... /suicide ^^

Discussions similaires

  1. JQuery FullCalendar Gerer la TimeZone GMT
    Par silverfab34 dans le forum jQuery
    Réponses: 3
    Dernier message: 24/08/2010, 09h26
  2. Réponses: 0
    Dernier message: 22/03/2010, 17h47
  3. Problème de timezone par défaut
    Par TiVoye dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 10/07/2009, 09h48
  4. Petit problème de gestion de Date et de TimeZone
    Par Remi Masson dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 19/03/2008, 00h25
  5. Réponses: 2
    Dernier message: 23/01/2007, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo