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 :

Problème de conversion de java.util.Date Object to a java.sql.Date Object


Sujet :

Collection et Stream Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut Problème de conversion de java.util.Date Object to a java.sql.Date Object
    Bonjour,

    J'ai une date de type java.util.date et je veux la convertir en java.sql.date.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.util.Date utilDate = new java.util.Date();
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
    System.out.println("utilDate:" + utilDate);
    System.out.println("sqlDate:" + sqlDate);
    Pour ça ma console affiche bien la date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    utilDate:Thu Dec 01 17:46:22 WET 2011
    sqlDate:2011-12-01
    Mais par exemple si je teste ça (la date est saisie à partir des champs de type JTextField)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.util.Date utilDate = new java.util.Date(2013,10,05);
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
    System.out.println("utilDate:" + utilDate);
    System.out.println("sqlDate:" + sqlDate);
    Dans ce cas ma sqlDate doit être 2013-10-05, mais malheureusement mon console affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    utilDate:Wed Nov 05 00:00:00 WET 3913
    sqlDate:3913-11-05
    au lieu de 2013 j'ai 3913.

    La même chose si j'essaie par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    java.util.Date utilDate = new java.util.Date(2006,06,06);
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
    System.out.println("utilDate:" + utilDate);
    System.out.println("sqlDate:" + sqlDate);
    ma console affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    utilDate:Fri Jul 06 00:00:00 WET 3906
    sqlDate:3906-07-06
    ici j'ai un problème de mois aussi : au lieu d'avoir 2006-06-06 j'ai 3906-07-06.

    SVP quelqu'un a une idée pourquoi? sinon y'a une autre méthode pour convertir une java.util.date en java.sql.date ou bien construire une java.sql.date à partir des champs (int annee, int mois, int jour) directement? car j'ai essayé aussi le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.sql.Date sqlDate2 = new Date(2007, 06, 06);
    System.out.println("sqlDatefromconstructeur:" + sqlDate2);
    mais ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlDatefromconstructeur:3907-07-06
    Merci d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut
    Oooooooooh, c' était trop simple, il faut juste utilise la fonction :

    Date.valueOf("2013-02-05").

    Mais ça n'empêche de savoir pourquoi il y' a le problème d'année que j' ai déjà expliqué . quelqu'un a une idée?
    Merci en tout cas.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    C'est tout expliqué par la JavaDoc de ce constructeur de Date, qui ne ment pas le moins du monde.
    En gros, avec ce constructeur, l'année doit être indiquée sur deux chiffres, comme quand on disait 01/02/95 pour "premier Février 1995". Puisque c'est sur deux chiffres, le constructeur ajoute 1900 à l'année indiquée, et puis voilà.

    "Mais c'est débile depuis qu'on a des dates en 2000 et après !"
    => Oui, c'est pour ça que ce constructeur est marqué déprécié, qu'il s'affiche barré dès que tu essaies de t'en servir, et que ton environnement de dev passe son temps à te dire "en fait il faudrait pas utiliser ce constructeur-là, jetez plutôt à œil à Calendar ou à SimpleDateFormat... Non, mais je déconne pas, là, ne vous servez pas de ce truc !"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Problème conversion java.util.date to java.sql.date
    Par sabeurios dans le forum Général Java
    Réponses: 2
    Dernier message: 15/01/2015, 00h06
  2. Conversion java.utils.Date / java.sql.Date
    Par devroot dans le forum Général Java
    Réponses: 4
    Dernier message: 02/04/2010, 00h26
  3. Réponses: 5
    Dernier message: 06/01/2010, 11h24
  4. Réponses: 0
    Dernier message: 12/12/2008, 14h16
  5. [SQL] date du jour dans requete sql
    Par heteroclite dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 17/10/2006, 00h50

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