Convertir une chaine à une date

Signaler
Messages postés
26
Date d'inscription
vendredi 12 mars 2010
Statut
Membre
Dernière intervention
27 mars 2011
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Bonsoir tout le monde,

J'ai besoin de votre aider pour résoudre un problème.
Je développe un application en java, et j'ai besoin de convertir une chaine de caractère à une variable de type date pour l'insérer dans ma base de données oracle 10g XE.

Pour ceux j'ai écrit cette méthode :


public static Date stringToDate(String sDate, String sFormat) throws Exception {
Date d;
SimpleDateFormat sdf = new SimpleDateFormat(sFormat);
d= sdf.parse(sDate);
return d;

J'ai essayé de tester sa au niveau du main avec ces lignes

connexion c =new connexion(); // c'est la classe qui contient la méthode stringtodate
c.stringToDate(d,"dd/MM/yyyy");
System.out.println(dt.toString());

J'ai comme affichage : Mon Feb 23 00:00:00 CET 1987

Alors que ce n'est pas le format que je souhaite ("dd/MM/yyyy")...

Quelqu'un a une idée sur comment je peux résoudre sa ???

Et merci d'avance :)
A voir également:

4 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Salut,

Normal : tu récupère une instance de la classe Date, mais la fonction toString de la classe Date te formatte la date pour avoir un format lisible, et non selon le format que tu veux toi.

Il te faut réutiliser un DateFormat pour convertir ta date en String pour avoir le format voulu :
String dateNonFormattee = "...";
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date date = format.parse(dateNonFormattee);
System.out.println(format.format(date));


Quel intérêt de faire une fonction qui prend 4 lignes de codes alors que l'utilisation directe d'un simpledateformat ne prend qu'une seule ligne de code ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
26
Date d'inscription
vendredi 12 mars 2010
Statut
Membre
Dernière intervention
27 mars 2011

Ahh merci bcp Darksidious, sa marche enfin :))
Messages postés
26
Date d'inscription
vendredi 12 mars 2010
Statut
Membre
Dernière intervention
27 mars 2011

Salut je voudrais bien te demander une autre petite question... Maintenant que j'ai convertit la chaine de caractère en une date et je l'ai mi au format que je désire, est ce que Oracle reconnait le type date de java? car sa m'a générer une exception lors de son insertion...

Exception in thread "main" java.sql.SQLException: ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique


Pour plus de détail je te montre le code de la méthode :

public void insert () throws SQLException, ParseException, Exception
{
String prenom= "7amma";
String nom ="jebari";
int cin= 6666;

String d ="23/02/1987";
Date dt= stringToDate(d);//méthode de convertissage de string à date


getconnexion(); //méthode de cx à la bd
stmt =conn.createStatement();
stmt.executeUpdate("INSERT INTO professeurs (prenom,nom,cin,date_de_naissance) VALUES ('" + prenom + "','" + nom + "','" + cin + "', "+ dt +" ) ");
stmt.close();
conn.close();
}
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
Salut,

Ce n'est pas oracle qui ne reconnait pas la date, mais la fonction SQL : la fonction SQL nécessite une date formatée, si tu lui
passes le toString de l'objet date (comme tu le fais ici), forcément, ca ne marche pas.

Donc :
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); // Je te laisse trouver le format reconnu par le langage SQL d'Oracle
stmt.executeUpdate("INSERT INTO professeurs (prenom,nom,cin,date_de_naissance) VALUES ('" + prenom + "','" + nom + "','" + cin + "', "+ format.format(dt) +" ) ");


______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement