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 :

problème avec conversion au type date


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Août 2009
    Messages : 18
    Par défaut problème avec conversion au type date
    bonjour à tous ,
    pour convertir un string au type date j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       public static Date stringToDate(String sDate, String sFormat) throws ParseException {
           SimpleDateFormat sdf = new SimpleDateFormat(sFormat);
           return sdf.parse(sDate);
         } 
        public static void testParseDate(String sDate) {
    		try {
    			Date d = stringToDate(sDate, "yyyy-MM-dd");
    			System.out.println(d.toString());
    		} catch(Exception e) {
    			System.err.println("Exception :");
    			e.printStackTrace();
    		}
    	}
    et ça marche a merveille il me convertit la date mais le probleme c'est que j'ai un resultat de type :
    Fri Aug 28 00:00:00 GMT 2009
    mais moi je veux avoir un resultat comme ceci : 2009-08-28 pour que je puisse l'inserer dans la base de données
    parce qu'avec la première conversion il ne reconnait pas la date il laisse 0000-00-00
    et 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,


    Une date est une date, et n'a pas de format particulier.
    Si tu veux l'afficher dans un format particulier, tu dois utiliser un SimpleDateFormat adéquat...


    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Août 2009
    Messages : 18
    Par défaut
    ouii je sais et je suis tout a fait d'accord mais j'ai utilisé mille façons avec ce SimpleDateFormat mais il affiche toujours ce résultat Fri Aug 28 00:00:00 GMT 2009

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par cute_h Voir le message
    ouii je sais et je suis tout a fait d'accord mais j'ai utilisé mille façons avec ce SimpleDateFormat mais il affiche toujours ce résultat Fri Aug 28 00:00:00 GMT 2009
    En tous cas, dans le code que tu as donné tu affiches directement d.toString() au lieu d'utiliser un DateFormat...
    Si comme tu le dis tu as essayé avec un SimpleDateFormat et que ça n'a pas marché, peux-tu montrer ce que tu as fait ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Août 2009
    Messages : 18
    Par défaut
    pour l'affichage j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      public static void testParseDate(String sDate) {
    		try {
    			Date d = stringToDate(sDate, "yyyy-MM-dd");
    			 Locale locale = Locale.getDefault();
    			DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT,locale);
    			System.out.println(new SimpleDateFormat("yyyy-MM-dd",locale).format(d));
    		} catch(Exception e) {
    			System.err.println("Exception :");
    			e.printStackTrace();
    		}
    	}
    et j'obtiens la forme que je veux 2009-08-28

    mais a vrai dire mon prblème n'est pas dans l'affichage , moi je veux que lors de la conversion j'obtien un resultat sous la forme 2009-08-28 parce que j'ai un probleme avec la fonction sql DATEDIFF
    parce que j'utilise des dates string et lors de la compilation il le me donne un resultat comme ceci
    DATEDIFF(Sun Aug 09 00:00:00 CEST 2009,Thu Jul 09 00:00:00 CEST 2009)

  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
    Et quel est le problème précis alors ??? (pourquoi ne pas avoir commencé par cela ?)

    a++

  7. #7
    Membre émérite Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Par défaut
    Si tu veux accéder à ta date formattée il faut systématiquement passer par un DateFormat.
    Normalement tu n'es pas vraiment censé utiliser une Date directement dans une chaîne de caractère, comme dis plus haut l'objet "Date" n'a pas de notion de format. Quand tu l'utilises pour l'afficher ou le mettre dans une String, il se met automatiquement au format du style "Thu Jul 09 00:00:00 CEST 2009" parce que c'est le format standard (de la classe ou de la JVM je ne sais plus), et tu ne peux pas le changer!

    Sinon j'ai une autre question: ton DateDiff, tu l'exécutes sur deux dates que tu connais dans ton programme? pourquoi ne pas le faire directement dans ton programme plutot que de le faire exécuter par le SGBD distant alors?

  8. #8
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Juste une idée, pourquoi tu stocke ta date sous un format "non-standart" alors que tu pourrai la stocker sous la forme d'un timestamp (un long si tu prefere)... apres pour faire des operation dessus c'est relativement simple et en Java a partir d'un long c'est facile de retrouver une date si tu a besoin de l'afficher.

    Le seul truc où il faut faire attention c'est de ou commence le timestamp, java c'est 1/01/1970, mais sur certaine base c'est 1/01/1900 mais bon ca reste du detail.

  9. #9
    Membre confirmé Avatar de yashiro
    Inscrit en
    Mars 2004
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 214
    Par défaut
    Comme le dis adiGuba
    Une date est une date, et n'a pas de format particulier.
    Si tu veux l'afficher dans un format particulier, tu dois utiliser un SimpleDateFormat adéquat...
    Une Date est un objet dépourvu de format. Maintenant si tu veux inserrer dans une BD (Oracle ou MySQL) ta date sous forme de chaine de caractère au format xxx, alors en ce moment tu demanderas à la classe SimpleDateFormat de te faire cette Transformation.

  10. #10
    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 yashiro Voir le message
    Maintenant si tu veux inserrer dans une BD (Oracle ou MySQL) ta date sous forme de chaine de caractère au format xxx, alors en ce moment tu demanderas à la classe SimpleDateFormat de te faire cette Transformation.
    Euh... JDBC est là pour gérer tout cela et utiliser le format de la BD...

    a++

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Août 2009
    Messages : 18
    Par défaut
    merci a tous pour votre aide en fin de compte je me suis inspirée de vos réponses pour trouver la solution
    et pour le datediff(expr1,expr2) expr ne doit pas obligatoirement etre une date on peut travailler avec String sous forme yyyy-mm-dd é ça marche
    encore une fois merci

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

Discussions similaires

  1. [C# 2.0] Problème de conversion de type
    Par freerider1 dans le forum Windows Forms
    Réponses: 18
    Dernier message: 11/08/2017, 14h50
  2. Réponses: 2
    Dernier message: 20/10/2008, 17h40
  3. Retrieve avec paramètre de type date
    Par digital prophecy dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 09/08/2006, 14h32
  4. [Excel] Problème de conversion de type de données
    Par keiserjo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2006, 13h26
  5. (Problème avec...) conversion de std::string en char
    Par crossbowman dans le forum SL & STL
    Réponses: 7
    Dernier message: 05/03/2006, 20h54

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