Voila tout est dans le titre. J'ai un String "Wed Mar 11 00:00:00 GMT 2009"
que je veux convertir en date.
Voila tout est dans le titre. J'ai un String "Wed Mar 11 00:00:00 GMT 2009"
que je veux convertir en date.
Pour parser ou formatter des dates selon un format précis, utilise SimpleDateFormat.
La FAQ aurait pu te renseigner...
Pourrais tu indiquer le code avec lequel tu fais tes tests?
1 - J'enregistre dans la base une date sous mysql new Date() ;
2- j'affiche ses données dans un JTable
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public Operation(){ //setCode(new Long(01)); setLibelle("libelle"); setDatefin(new Date()); setDatedeb(new Date()); setDatesais(new Date()); setMontant(new Long(0)); setStatut("S"); setObjet("objet"); setDivers("divers"); }
pour ce faire j'utilise un cell render qui est JDateChooser
Cest donc à ce niveau que ça coince
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 import java.awt.Component; import javax.swing.JTable; import java.text.SimpleDateFormat; public class DateChooserRenderer extends com.toedter.calendar.JDateChooser implements javax.swing.table.TableCellRenderer { public DateChooserRenderer(){super();} public DateChooserRenderer(String arg0,String arg1,char c){super(arg0,arg1,c);} //public DateChooserRenderer(boolean startEmpty){super(startEmpty);} //public DateChooserRenderer(JCalendar jcalendar){super(jcalendar);} //public DateChooserRenderer(java.lang.String dateFormatString, boolean startEmpty){super(dateFormatString,startEmpty);} public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row, int column){ if (value == null) setDate(null); else { try { System.out.println(value.toString()); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date d = formatter.parse(value.toString()); System.out.println(d); setDate(new java.util.Date()); } catch(Exception e) {e.printStackTrace();} } return this; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java.util.Date d = formatter.parse(value.toString());
La problème est évident : tu trouves que "Wed Mar 11 00:00:00 GMT 2009" ça ressemble au format "yyyy-MM-dd" ?
Donc utilise un autre format lors de l'instanciation du SimpleDateFormat (la javadoc est ton amie...) et ça ira beaucoup mieux...![]()
C'est un problème de locale. Dans le constructeur du SimpleDateFormat, ajoute :
EDIT : trop lent, mais tu auras aussi un problème de Locale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SimpleDateFormat format = new SimpleDateFormat( "...", java.util.Locale.US );
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
ce que vous avez proposé ne marche pas par contre
est passé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 setDate((Date)value);
A qui parles-tu ?
Ce que j'ai proposé fonctionne parfaitement chez moi. Mais comme tu sembles avoir du mal à aller voir la javadoc, voici le code fonctionnel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SimpleDateFormat dateFormat = new SimpleDateFormat( "EEE MMM d HH:mm:ss z yyyy", Locale.UK ); Date d = dateFormat.parse( "Wed Mar 11 00:00:00 GMT 2009" );
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
Ah, si l'Object value est en fait une Date, il est effectivement complètement inutile et contreproductif de la transformer en String (avec toString(), qui utilise le format local par défaut...) avant de la re-parser
Donc pas besoin de parser la date, et pas besoin d'utiliser SimpleDateFormat...
Mais c'est quand même bien, pour ta culture personnelle, d'avoir vu le fonctionnement de cette classe
J'allais encore te proposer d'utiliser quand même le SimpleDateFormat pour afficher ta date dans le format que tu veux (méthode format), mais j'imagine qu'une classe s'appelant "JDateChooser" et dont le constructeur utilise un paramètre "dateFormatString" doit déjà offrir tout ce qu'il faut...
Dans la classe en paramètre c'est un Object qui est passé sinon effectivement c'est une date.
J'ai une autre question peut on imposer un format de date qui sera enregistré ds n'importe quelle base (MYSQL,ORACLE, ...)
(et ce au niveau de new Date())?
J'ai l'impression qu'en passant sur une autre base qui n'utilise pas le même format de MYSQL mon code va me renvoyer la même erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part SimpleDateFormat sdf = new SimpleDateFormat( "EEE MMM d HH:mm:ss z yyyy", Locale.UK );
Si la base de données et le driver JDBC/ODBC ... sont bien faits, l'objet reçu sera toujours une Date (ou un objet équivalent, peut être un jour un Calendar).
Donc pour le transformer en String, ce sont les méthodes de JAVA qui sont utilisés (dépendant donc des "Locale").
Partager