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 :

Transformer GregorianCalendar en java.sql.date


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut Transformer GregorianCalendar en java.sql.date
    Bonjour !

    Cela fait plusieurs jours que je butte sur ce problème...

    j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSQL = new java.sql.Date(date.getTime().getTime());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     java.sql.Date dateSQL = new java.sql.Date(date.getTimeInMillis());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSQL = java.sql.Date.valueOf(date.get(GregorianCalendar.YEAR)+ "-" + (date.get(GregorianCalendar.MONTH)) + "-" + date.get(GregorianCalendar.DAY_OF_MONTH));
    J'ai surement essayé d'autres choses mais là je m'en souviens plus.

    sinon le context :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    java.sql.PreparedStatement p1 = db.prepareStatement("select * from patient where nom=? and prenom=? and dateN=?");
                p1.setObject(1, nom, Types.VARCHAR);
                p1.setObject(2, prenom, Types.VARCHAR);
                // java.sql.Date dateSQL = java.sql.Date.valueOf(date.get(GregorianCalendar.YEAR)+ "-" + (date.get(GregorianCalendar.MONTH)) + "-" + date.get(GregorianCalendar.DAY_OF_MONTH));//conversion de la date gregorian calendar en type Date sql
                java.sql.Date dateSQL = new java.sql.Date(date.getTime().getTime());
     
                p1.setObject(3, dateSQL, Types.DATE);
                ResultSet result = p1.executeQuery();
    Merci pour vos futurs réponses

  2. #2
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSQL = new java.sql.Date( date.getGregorianChange().getTime());
    je viens d'essayer ça...

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSQL = new java.sql.Date(date.getTime().getTime());
    est correct, bien que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Date dateSQL = new java.sql.Date(date.getTimeInMillis());
    évite la création d'un objet inutile. Quel est votre problème?

  4. #4
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    Je pense que le problème ne vient pas de la transformation mais plutôt d'un souci avec mon resultset.

    C'est une page pour rechercher une personne par son nom, prénom date de naissance dans une base de donnée. Une fois qu'on a les trois, on crée une instance DMA.

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    package Admission;
     
    import Princeton.DMA;
     
     
    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    import java.sql.DriverManager;
    // </editor-fold> 
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Types;
    import java.util.GregorianCalendar;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    public class IAdmissionLienBD {
     
        // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
        // #[regen=yes,id=DCE.473E37C0-E8F5-799E-B860-5FEE7A6E7513]
        // </editor-fold> 
        public IAdmissionLienBD() {
        }
     
        public DMA patient(String nom, String prenom, GregorianCalendar date) {
            DMA retour = null;
            try {
                try {
                    Class.forName("com.mysql.jdbc.Driver");
                } catch (ClassNotFoundException ex) {
                    Logger.getLogger(IAdmissionLienBD.class.getName()).log(Level.SEVERE, null, ex);
                }
                java.sql.Connection db = DriverManager.getConnection(accueil.NewMain.bd, accueil.NewMain.user, accueil.NewMain.mdp);
                java.sql.PreparedStatement p1 = db.prepareStatement("select * from patient where nom=? and prenom=? and dateN=?");
                p1.setObject(1, nom, Types.VARCHAR);
                p1.setObject(2, prenom, Types.VARCHAR);
                // java.sql.Date dateSQL = java.sql.Date.valueOf(date.get(GregorianCalendar.YEAR)+ "-" + (date.get(GregorianCalendar.MONTH)) + "-" + date.get(GregorianCalendar.DAY_OF_MONTH));//conversion de la date gregorian calendar en type Date sql
                 java.sql.Date dateSQL = new java.sql.Date(date.getTime().getTime());
                //  java.sql.Date dateSQL = date.getGregorianChange();
                //java.sql.Date dateSQL = new java.sql.Date(date.getGregorianChange().getTime());
                //java.sql.Date dateSQL = new java.sql.Date(date.getTimeInMillis());
     
                p1.setObject(3, dateSQL, Types.DATE);
                ResultSet result = p1.executeQuery();
                System.out.println("IAdmissionLienBD : on a (ou pas) trouvé ce patient :");
              //  result.toString();
     
     
                boolean next = result.next();
                if (!next) {
                    retour = null;
                    System.out.println("On n'a pas trouvé le patient dans la bd");
                } else {
                   // retour = result.getString(1);
                    GregorianCalendar dateN = new GregorianCalendar();
                    GregorianCalendar dateC = new GregorianCalendar();
                    dateN.setTime(result.getDate(5));
                    dateN.toString();
                    dateC.setTime(result.getDate(12));
                    String nomDMA = result.getString(2);
                    nomDMA.toString();
                    String prenomDMA = result.getString(3);
                    prenomDMA.toString();
                   // System.out.println("Les deux dates sont-elles identiques ?");
                  //  System.out.println(dateN.equals(date));
                    retour = new DMA(nomDMA, prenomDMA, dateN);
                    retour.setAdresse(result.getString(7));
                  //  retour.setDateCreation(dateC);
                    retour.setLVenue(null); // TO DO : faire requête eventuellement dans une autre classe lienBD
     
                    retour.setNomMedTraitant(result.getString(9));
                    retour.setNumSecu(result.getString(10));
                    retour.setSexe(result.getString(4));
                    retour.setLieuNaissance(result.getString(6));
                    retour.setNationalite(result.getString(8));
                    retour.setIPP(result.getInt(1));
     
     
                    System.out.println("On a trouvé le patient dans la bd");
     
                }
     
     
            } catch (SQLException ex) {
                /** message d'erreur 
                 */
                System.out.println(ex.getMessage() + "ahhhhhh_de_IAdmissionLienBD");
                 ex.printStackTrace();
     
            }
            return retour;
        }
     
        public void creerPatientBD(DMA p) {
            try {
                Class.forName("com.mysql.jdbc.Driver"); //connexion à la base de données
     
                java.sql.Connection db = DriverManager.getConnection(accueil.NewMain.bd, accueil.NewMain.user, accueil.NewMain.mdp);
                java.sql.Date dateASQL = java.sql.Date.valueOf(p.getDateCreation().get(GregorianCalendar.YEAR) + "-" + (p.getDateCreation().get(GregorianCalendar.MONTH)) + "-" + p.getDateCreation().get(GregorianCalendar.DAY_OF_MONTH));
                java.sql.Date dateNSQL = java.sql.Date.valueOf(p.getDateN().get(GregorianCalendar.YEAR) + "-" + (p.getDateN().get(GregorianCalendar.MONTH)) + "-" + p.getDateN().get(GregorianCalendar.DAY_OF_MONTH));
                java.sql.Statement statement = db.createStatement();
                statement.executeUpdate("INSERT INTO patient(ipp,nom,prenom,sexe,datN,lieu,adresse,nationalite,nomMedT,nir,dateactiv)" + "VALUES ('" + p.getIPP() + "','" + p.getNom() + "','" + p.getPrenom() + "','" + dateNSQL + "','" + p.getSexe() + "','" + p.getLieuNaissance() + "','" + p.getAdresse() + "','" + p.getNationalite() + "','" + p.getNomMedTraitant() + "','" + p.getNumSecu() + "','" + dateASQL + "');");
                db.close();
            } catch (Exception ex) {
                /** message d'erreur 
                 */
                System.out.println(ex.getMessage() + "erreur dans la création du patient");
            }
        }
    }
    l'output donne :
    date calendar issue de l'entrée utilisateur
    23
    2
    1987
    IAdmissionLienBD : on a (ou pas) trouvé ce patient :
    On n'a pas trouvé le patient dans la bd
    BUILD SUCCESSFUL (total time: 19 seconds)
    Au départ je l'avais implémenté pour que dans la recherche on prenne juste le nom et prénom et ça marchait. Je m'étais dit que je galèrerai avec les dates donc j'ai voulu vérifier le reste avant. Je galère bien, ça c'est sur, mais à force de chercher la ptite bête, j'ai ptet modifié le code et créer d'autres erreurs
    Ce qui m'aide le moins à comprendre c'est qu'avec la recherche avec la date, je l'ai vu fonctionner sur l'ordi de ma collègue ! Et chez moi ça marche pas... C'est peut-être un problème de version ?
    On a le même netbeans, le même mysql, peut être des driver différents mais je crois pas.

  5. #5
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    Voilà la table concerné :


    Uploaded with ImageShack.us

  6. #6
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    Je devrais pas rentrer dans le if !next car la personne est dans la base de donnée

    J'ai verifié le gregorian calendar en paramètre de la fonction est bon, le dateSQL aussi semblerait. je comprends pas pourquoi ma requête donne rien...

  7. #7
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System.out.println(nom+" "+prenom+" "+date);
    ce qui donne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IAdmissionLienBD : on a (ou pas) trouvé ce patient :
    epi fanny java.util.GregorianCalendar[time=543452400000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=1987,MONTH=2,WEEK_OF_YEAR=13,WEEK_OF_MONTH=4,DAY_OF_MONTH=23,DAY_OF_YEAR=82,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=3600000,DST_OFFSET=0]
    On n'a pas trouvé le patient dans la bd
    la requête manuelle fonctionne aussi :



    Uploaded with ImageShack.us

  8. #8
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    Je viens de voir que ma dateSQL donnait :

    1987-03-23

    au lieu de

    1987-02-23

    bizarre...

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Votre requete d'insertion est foireuse, dangereuse va joyeusement foirer au niveau des champs dates puisque vous faites indirectement appel à java.sql.Date.toString hors la sortie de cette commande dépend de la locale utilisateur. Utilisez plutot un preparedStatement qui pemet de transférer les valeur sans devoir les formatter et sans altération et qui, de plus, évite tous les problèmes d'injection SQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    PreparedStatement ps = db.prepareStatement("INSERT INTO "+
        patient(ipp,nom,prenom,sexe,datN,lieu,adresse,nationalite,nomMedT,nir,dateactiv) "+
        values(?,?,?,?,?,?,?,?,?,?,?)" );
    ps.setString(1,p.getIPP());
    ps.setString(2,p.getNom());
    ps.setString(3,p.getPrenom());
    ps.setDate(4, + new java.sql.Date(p.getDateCreation().getTimeInMillis()));
    // alternativement, pour préserver la timezone, on aurait pu utiliser
    // ps.setDate(4, + new java.sql.Date(p.getDateCreation().getTimeInMillis()), g.getDateCreation());
    // On continue avec les autres champs
    ps.executeUpdate();

    aussi, bien qu'elle ne peuvent pas faire de mal, les méthodes comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p1.setObject(3, dateSQL, Types.DATE);
    sont inutilement longue, utilisez directement les méthode comme setString, setDate, ....

  10. #10
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    idem avec getimeinmillis

    ça doit être un problème de config de java.sql.date...

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par chabz Voir le message
    Je viens de voir que ma dateSQL donnait :

    1987-03-23

    au lieu de

    1987-02-23

    bizarre...
    C'est une question de timezone ça. 23-03-1987 00:00 à GMT+1 est la même chose que 23-02-1987 23:00 à GMT. Comme votre java sql Date perd la notion de timezone, il n'affiche pas nécessairement de la même manière que Calendar. D'une manière générale, avec Date, les conversion en String sans passer par un formatter sont à éviter.

  12. #12
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Votre requete d'insertion est foireuse, dangereuse va joyeusement foirer au niveau des champs dates puisque vous faites indirectement appel à java.sql.Date.toString hors la sortie de cette commande dépend de la locale utilisateur. Utilisez plutot un preparedStatement qui pemet de transférer les valeur sans devoir les formatter et sans altération et qui, de plus, évite tous les problèmes d'injection SQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    PreparedStatement ps = db.prepareStatement("INSERT INTO "+
        patient(ipp,nom,prenom,sexe,datN,lieu,adresse,nationalite,nomMedT,nir,dateactiv) "+
        values(?,?,?,?,?,?,?,?,?,?,?)" );
    ps.setString(1,p.getIPP());
    ps.setString(2,p.getNom());
    ps.setString(3,p.getPrenom());
    ps.setDate(4, + new java.sql.Date(p.getDateCreation().getTimeInMillis()));
    // alternativement, pour préserver la timezone, on aurait pu utiliser
    // ps.setDate(4, + new java.sql.Date(p.getDateCreation().getTimeInMillis()), g.getDateCreation());
    // On continue avec les autres champs
    ps.executeUpdate();

    aussi, bien qu'elle ne peuvent pas faire de mal, les méthodes comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p1.setObject(3, dateSQL, Types.DATE);
    sont inutilement longue, utilisez directement les méthode comme setString, setDate, ....
    Merci pour les remarques, j'en tiendrais compte mais je ne suis pas encore à cette partie du code faite par mon collègue, il a tendance à coder de manière sale. J'ai mis tout le code sans enlever la partie que je n'exécute pas encore pour le moment.

    La base de donnée a été remplie manuellement jusqu'à présent sans passer par java ,tout du moins pour la bd hébergé sur mon ordi, ce qui peut peut être expliquer pourquoi ça marche sur sa machine et pas la mienne... Mais ce qui est sur c'est que la bd est clean.

  13. #13
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            int day = (new Integer(fenetre.textFieldDateNaissance.getText().substring(0, 2))).intValue();
            System.out.println(day);
            int month = (new Integer(fenetre.textFieldDateNaissance.getText().substring(3, 5))).intValue();
            System.out.println(month);
            int year = (new Integer(fenetre.textFieldDateNaissance.getText().substring(6, 10))).intValue();
            System.out.println(year);
     
     
            GregorianCalendar date = new GregorianCalendar(year, month, day);
    C'est le code que j'ai utilisé pour récupérer l'entrée utilisateur de la date. je peux directement faire un java.sql.date, mais comme dans le noyau fonctionnel tout est en gregorian calendar, je vais à nouveau rencontrer ce problème...

    j'ai aussi utilisé ça pour faire le jtextfield :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            formatDate = null;
            try {
                formatDate = new MaskFormatter("##/##/####");
            } catch (ParseException ex) {
                Logger.getLogger(IAdmissionFenetre.class.getName()).log(Level.SEVERE, null, ex);
            }
            textFieldDateNaissance = new JFormattedTextField(formatDate);
    Je regarde comment les formatter peuvent m'aider...

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je viens de voir, votre GregorianCalendar indique:

    YEAR=1987,MONTH=2,WEEK_OF_YEAR=13,WEEK_OF_MONTH=4,DAY_OF_MONTH=23
    Hors votre message indique:
    1987-02-23


    Vosu avez l'air de croir que MONTH=2 dans un Calendar c'est février, ce qui est faux! MONTH=2 signifie MARS dans un Calendar, voir les valeur de Calendar.JANUARY, Calendar.FEBRARY, etc pour s'en convaincre Le numéro de mois est basé sur 0 .

    désolé d'avoir confondu les mois et jours dans mon message précédent, c'est toujours le problème avec les notations xx-yy-zzzz, suivant la locale, yy c'est le mois ou le jour :p

  15. #15
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    Du coup, j'ai fait un -1 sur l'int que je récupère de l'utilisateur et ça marche ! \o/ Yahooo

    Merci beaucoup tchize

    Je dois quand même regarder les formatter ou comme ça c'est suffisamment "propre" ?

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Les formatter ca sert aux convertions date -> String. Si vous n'avez pas besoin d'afficher les dates ou de récupérer une date formattée par l'utilisateur, il ne servent à rien. La Db utilise directement les type Date dans les preparedStatements.

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

Discussions similaires

  1. transformation de String to java.sql.date
    Par opensource dans le forum Langage
    Réponses: 7
    Dernier message: 07/03/2008, 17h23
  2. Cast de java.util.DATE à java.sql.DATE
    Par mnemonic78 dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2007, 08h21
  3. Conflit entre java.util.Date et class java.sql.Date
    Par vonitiana dans le forum Langage
    Réponses: 3
    Dernier message: 30/06/2006, 11h43
  4. de java.sql.Date à java.utile.Date
    Par Sniper37 dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 23/05/2006, 16h10
  5. [java.sql.Date] format compatible tout sgbd ?
    Par djskyz dans le forum JDBC
    Réponses: 8
    Dernier message: 15/09/2004, 11h28

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