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

Langage Java Discussion :

probleme de date si on change de gmt


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 65
    Par défaut probleme de date si on change de gmt
    Bonjour,

    voila j'utilise un simple new Date() pour me donner la date et l'heure du systeme, jusque là aucun soucis.

    Le problème actuel, si je change de gmt, cela me donne une mauvaise heure.
    C'est surtout un gmt en particulier casablanca, l'heure est décalé de 4h30 environ alors que la date en bas à droite dans la barre des tâches de windows n'a reculé elle que d'une heure.

    Avez-vous une idée.

    J'ai essayé avec un calendar mais c'est pareil.

    Y-a-t-il quelqu'un qui aurait une solution ?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Ce n'est pas très clair...

    Un bout de code avec les résultats obtenus (et souhaités) ne sera pas inutile

    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 65
    Par défaut
    Ce n'est pas une question de code c'est juste une new Date() que je fais.

    mais bon apparament ca viendrait de l'api timezone java il confondrait casablanca avec caracas.
    Donc resultat on a 4h30 de difference et sur windows 1h.

    Voila.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    A mon avis ta conversion doit pas correct a un endoit.
    Voici un code que j'utilise sur une de mes applications, inspires toi en si tu veux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.TimeZone;
     
    public class CurrentTime
    	{
    	static public String dateToString(Date date, String dateformat)
    		{
    		if (date == null)
    			return null;
    		SimpleDateFormat formatter = new SimpleDateFormat(dateformat);
    		return formatter.format(date);
    		}
     
    	/**
             * @param args
             */
    	public static void main(String[] args)
    		{
    		System.out.println(dateToString(now(getTimeZoneObject("Europe/Paris")), "dd/MM/yyyy HH:mm:ss"));
    		System.out.println(dateToString(now(getTimeZoneObject("Africa/Casablanca")), "dd/MM/yyyy HH:mm:ss"));
    		}
     
    	static private TimeZone getTimeZoneObject(String TimeZoneID)
    		{
    		return TimeZone.getTimeZone(TimeZoneID);
    		}
     
    	static private Date now(TimeZone tz)
    		{
    		Calendar calref = new GregorianCalendar(tz);
    		Calendar cal = new GregorianCalendar();
    		cal.set(Calendar.YEAR, calref.get(Calendar.YEAR));
    		cal.set(Calendar.MONTH, calref.get(Calendar.MONTH));
    		cal.set(Calendar.DAY_OF_MONTH, calref.get(Calendar.DAY_OF_MONTH));
    		cal.set(Calendar.HOUR_OF_DAY, calref.get(Calendar.HOUR_OF_DAY));
    		cal.set(Calendar.MINUTE, calref.get(Calendar.MINUTE));
    		cal.set(Calendar.SECOND, calref.get(Calendar.SECOND));
    		cal.set(Calendar.MILLISECOND, calref.get(Calendar.MILLISECOND));
    		return cal.getTime();
    		}
     
    	}
    Le resultat est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    14/01/2009 15:43:28
    14/01/2009 14:43:28
    ---
    Farid

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 65
    Par défaut
    Merci pour ton code.

    Mais en fait moi j'utilise l'api de base qui gere les id automatiquement, donc pas besoin de s'amuser a recopier les 576 ids et de faire la conversion a la main alors que l'api java le fourni.

    Seulement dans l'api java il y a un bug. De plus en testant les differents GMT seulement celui de casablanca ne fonctionne pas.

    Cetait seulement pour savoir si quelqu'un avait eu le meme probleme, puisque au depart je n'etais pas absolument sur que l'api deconnait.

    Voila merci

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pyth35 Voir le message
    Seulement dans l'api java il y a un bug. De plus en testant les differents GMT seulement celui de casablanca ne fonctionne pas.
    Comment tu arrives à cette conclusion ???

    a++

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    Je pense qu'il faudrait que tu nous montre un exemple de code, pour qu'on comprenne ta source de probleme

    PS: tu peux telecharger la derniere mise a jour des trimezone des jvm 1.4+ ici:
    http://java.sun.com/javase/timezones/

    ---
    Farid

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 65
    Par défaut vant
    Excusez moi, mais j'ai poussé un peu plus loin mon investigation.
    En fait c'est un bug java récent, puisqu'il faut avoir la version windows xp sp3 pour voir apparaître le bug.

    Avant tout, allez dans date système et changez le fuseau horaire : mettez GMT Casablanca (il s'écrit comme ceci, je veux dire rien avant rien après important !!, si ce n'est pas le cas, vous etez soit en sp2, soit vous n'avez pas rajouté la mise à jour qui a causé le bug)

    Donc le code simple.
    Maintenant mettez le dans un main et exécuté le.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /** Date du systeme. GTM Casablanca. */
    Calendar date = Calendar.getInstance();
    System.out.println(date.getTime());
    TimeZone timeZone = date.getTimeZone();
    System.out.println(timeZone.getID());
    System.out.println(timeZone.getDisplayName());

    Et en fait ce n'est pas casablanca mais caracas qui est dans la timezone id voila tout.

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    etrange.
    Tu utilises quelle version exacte de la JVM (java -version) ?

    Je ne peux pas tester pour le moment (process en cours), mais je testerai ce soir.

    ---
    Farid

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 65
    Par défaut
    java version 1.06_06

  11. #11
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Effectivement, il y a (eu) un certain nombre de bugs sur le TimeZone Casablanca.

    Essaye de mettre à jour ta JVM par la version la plus récente.

    Tu peux aussi essayer de mettre à jour uniquement les données TZ.

    A+
    Gronono

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problemes de dates SQL PARADOX
    Par igs dans le forum Paradox
    Réponses: 5
    Dernier message: 05/07/2004, 18h35
  2. Problème de date
    Par rh0D'm@n dans le forum Modules
    Réponses: 3
    Dernier message: 11/05/2004, 15h16
  3. Probleme de date
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 19/03/2004, 14h19
  4. probleme de date (toujours et encore des dates)
    Par Yannesco dans le forum SQL
    Réponses: 3
    Dernier message: 02/02/2004, 19h04
  5. Probleme de date
    Par danuz dans le forum XMLRAD
    Réponses: 3
    Dernier message: 24/09/2003, 15h57

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