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

Collection et Stream Java Discussion :

TimeStamp ajustée en Gmt TimeZone


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut TimeStamp ajustée en Gmt TimeZone
    Bonjour,

    J'ai besoin d'obtenir un TimeStamp ajusté en celui de Gmt.
    J'ai essayé le code suivant que se trouve partout dans le net pour une situation comme la mienne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Calendar cLocal = new	GregorianCalendar(TimeZone.getTimeZone("GMT"));
    long lCurrentTime = cLocal.getTimeInMillis();
    Timestamp sCurrTimeStamp = new Timestamp(lCurrentTime);
    String localTime = sCurrTimeStamp.toString();
    System.out.println("le tps actuel en gmt hashé :" + localTime);
    Mais j'obtiens toujours la valeur ajusté sur le temps en local et non pas en Gmt (normalement -1 heure temps de paris par rapport à celui de gmt).

    Merci d'avance.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Un objet Date n'a pas de Timezone.
    Un objet Date représente un instant dans le temps, et un instant dans le temps est le même qu'on soit à Paris ou à New York. Ce qui change, de Paris à New York, c'est la manière dont on l'écrit.

    Pour écrire un objet Date, on n'utilise pas toString() ni System.out.println(), sauf dans le cas très rare où ça fait ce qu'on veut (Date et heure dans la time zone par défaut, dans la langue par défaut, format long.)

    Pour écrire une Date, on utilise un SimpleDateFormat et sa méthode format().

    Comme tu peux le constater, SimpleDateFormat a une méthode setTimeZone().
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 158
    Par défaut
    je suis d'accord avec toi sur le fait que Un objet Date représente un instant dans le temps.

    Mon objectif de ce bout de programme est de prendre une référence. car mon site est interrogé par plusieurs clients et qui se trouvent dans des zones différentes (pas la même zonetime). Et de coup mon but est ces clients m'envoient en timezone GMt, moi j'ajourne mon timezone à GMT et comme ça je garantie que j'obtient un résultat absolu et non plus relatif.

    Dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendar cLocal = new	GregorianCalendar(TimeZone.getTimeZone("GMT"));
    cette instruction ne transforme pas mon timezone en GMT. A quoi ça sert donc ce constructeur GregorianCalendar qui prend un TimeZone sans pouvoir affecter.

    Merci.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ah, excuse-moi, je n'avais pas vu que tu utilisais le long de getTimeInMillis() au lieu d'un objet Date.
    getTimeInMillis() fonctionne comme les Dates, ça représente un instant dans le temps, sans TimeZone.
    Pour la petite histoire, getTimeInMillis() indique le nombre de millisecondes écoulées depuis Epoch GMT. Mais peu importe. Ce qui compte est que ça désigne un instant, sans TimeZone. Cet instant est le même à Paris et à New York. Ce qui change c'est la manière de l'écrire.

    Comme je l'ai dit, pour afficher une Date, on utilise un SimpleDateFormat. Pas un System.out.println().

    cette instruction ne transforme pas mon timezone en GMT.
    Une TimeZone est un objet immutable, on ne peut pas le transformer.

    A quoi ça sert donc ce constructeur GregorianCalendar qui prend un TimeZone sans pouvoir affecter.
    Un calendar est un objet permettant de faire des opérations calendaires sur une date, et voir ses coordonnées calendaires : ajouter des heures, voir sur quelle année, quel mois, quel jour et quelle heure on arrive. Par exemple.

    Pour faire des opérations calendaires on doit savoir sur quelle Time Zone on les fait, d'abord pour savoir comment on passe des millisecondes au calendrier, ensuite pour savoir comment on passe du calendrier aux millisecondes. De plus, les différentes timezones n'ont pas les mêmes règles de changement d'heure.

    C'est pour ça qu'on peut changer la time zone d'un calendrier : pour utiliser une autre time zone que celle par défaut.
    Il n'empêche que getTimeInMillis() est une donnée sans time zone. Elle représente un instant dans le temps, indépendant de la TimeZone.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Affichage timestamp en fonction de timezone
    Par gdlmus dans le forum Langage
    Réponses: 1
    Dernier message: 02/05/2013, 11h55
  2. transformation timestamp GMT en timestamp timezone
    Par catapicultrophe dans le forum Langage
    Réponses: 1
    Dernier message: 18/01/2011, 12h51
  3. Réponses: 0
    Dernier message: 22/03/2010, 17h47
  4. Timezone - Inserer les dates en GMT ?
    Par tiboudchou dans le forum Hibernate
    Réponses: 3
    Dernier message: 26/07/2009, 09h57
  5. [SQL][Timestamp] obtenir une date GMT
    Par JeffK dans le forum Oracle
    Réponses: 9
    Dernier message: 20/07/2006, 17h26

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