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 :

convertir "jj/mm/aa" en "aa/mm/jj"


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Par défaut convertir "jj/mm/aa" en "aa/mm/jj"
    Bonjour


    A l'origine j'ai une date sur as400 du format: 2010-10-14

    Je charge cette date dans un DefaultTableModel a partir d'un Resultset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private DefaultTableModel data;
    Je lis le contenu de ce DefaultTableModel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("data.getValueAt(l,4) =" + data.getValueAt(l,4));
    Ca m'affiche:
    data.getValueAt(l,4) =14/10/10
    j'insere ensuite dans une colonne Mysql de type timestamp

    et ça me sort :
    2014-10-10 00:00:00
    Donc au momment ou je fais le syso, je desire inverser
    14/10/10
    en
    10/01/14
    Pour avoir au final:
    2010-10-14 00:00:00
    Auriez- vous une piste ?

  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
    Oui : tu t'es emmêlé en passant de Date à String et de String à Date, peut-être plusieurs fois.

    Chaque fois qu'on transforme String en Date et Date en String, on doit le faire avec SimpleDateFormat, ou éventuellement avec un outil qui a ce rôle-là. Il ne faut jamais croire que ça va marcher sans se poser de question, on doit toujours comprendre pourquoi la transformation String -> Date et Date -> String marche, car on a fait ce qu'il faut pour.

    Quand tu récupères la date venant du ResultSet, il faut le faire avec getDate() ou getTimestamp(), ce qui te renverra un objet Date. Pas avec getString(), qui renverrait un String de format inconnu a priori.

    Je ne sais pas ce que tu mets et récupères dans ton DefaultTableModel, Date ou String, mais en tout cas ça doit être la même chose.
    Si c'est un String, pense à utiliser SimpleDateFormat pour transformer Date en String et String en Date.

    Quand tu l'insères en MySql, pense à le faire avec setTimestamp() et pas avec setString().

    Et normalement ça roule.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Salut,

    J'imagine que le champ source du resultset est un champ timestamp. Dans ce cas, il faut le recuperer avec rs.getTimestamp pour recuperer un objet Timestamp.

    Ensuite, tu peux utiliser un SimpleDateFormat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy");
    Timestamp ts = rs.getTimestamp(5);
    System.out.println("date:" + sf.format(ts));
    a+

  4. #4
    Membre confirmé Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Par défaut
    Salut,

    Bien vu et Merci

    J'ai fait ce que vous m'avez dit à la sortie du ResultSet, et ça fonctionne du tonnerre

    voici mon code:
    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
    	data.setRowCount(0);
    	data.setColumnCount(0);
    // on nomme les colonnes a partir des metadata
    	for (int i = 1; i <= meta.getColumnCount(); i++) {
    	     data2.addColumn(meta.getColumnLabel(i));
    // System.out.println("meta type colonne = " + meta.getColumnLabel(i));
                 }
    	String[] ligne = new String[meta.getColumnCount()];
    	SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
    // puis on ajoute une par une les lignes de resultat a partir du resultset
    	while (resultat.next())	{
    		for (int i = 1; i <= meta.getColumnCount(); i++) {
    // cas ou les colonnes 3 et 4 sont des dates
    			if (i == 4 || i == 5){
    				Date dt = resultat.getDate(4);
    				ligne[i - 1] = dt.toString(); 
    // System.out.println("date:" + sf.format(dt));
    			}
    			else {
    				ligne[i - 1] = resultat.getString(i); 
    			}
    		}
    		data.addRow(ligne);
                 }
    J'obtiens bien dans MySQL:
    2010-10-14 00:00:00
    @+

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/07/2012, 01h17
  2. [java 1.4] convertir une simple quote
    Par longbeach dans le forum Langage
    Réponses: 5
    Dernier message: 11/09/2008, 15h28
  3. Quotes dans TFilenameEdit (RXLib)
    Par AnnSo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/01/2003, 20h26

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