Controle du format d'une date en java
Résolu
Niels
-
kij_82 Messages postés 4102 Date d'inscription Statut Contributeur Dernière intervention -
kij_82 Messages postés 4102 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je réalise une application web en Java avec une base de données Mysql. Dans cette application, j'ai des pages JSP qui contiennent des formulaires. L'un des champs à remplir est une date.
Je voudrais pouvoir vérifier si l'utilisateur rentre une date du bon format (à savoir yyyy-mm-dd). Je ne sais comment faire, quelqu'un pourrait m'aider svp ?
Merci !
Niels
Je réalise une application web en Java avec une base de données Mysql. Dans cette application, j'ai des pages JSP qui contiennent des formulaires. L'un des champs à remplir est une date.
Je voudrais pouvoir vérifier si l'utilisateur rentre une date du bon format (à savoir yyyy-mm-dd). Je ne sais comment faire, quelqu'un pourrait m'aider svp ?
Merci !
Niels
Configuration: Windows XP Firefox 2.0.0.12
7 réponses
-
Bonjour,
Tu peux suivre cet exemple que j'utilise et qui fonctionne :
Pour controler le format de ta date :String myDate = "2007-05-26"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); sdf.setLenient(true); Date d = new Date(); try { d = sdf.parse(myDate ); String t = sdf.format(d); if(t.compareTo(myDate) != 0) throw new Exception("MESSAGE ERREUR); } catch (Exception e) { // --- Gestion mauvaise date }
Et pour contrôler s'il s'agit d'une date réelle, je crois que ce code fonctionne (pas certain à vérifier) :Calendar c = Calendar.getInstance(); String myDate = "2007-95-26"; try{ c.setLenient(false); c.set( Integer.valueOf(getFrom().substring(0,4)).intValue(), Integer.valueOf(getFrom().substring(5,7)).intValue(), Integer.valueOf(getFrom().substring(8,10)).intValue()); c.getTime(); } catch(Exception iAE){ // --- Gestion de date inexistante (ou d'erreur) }
-
Salut kij,
Avec
----
String unedate = "2007-95-26"; // celle de ton exemple
mano = unedate.substring(0,4);
p1 = Integer.parseInt(mano);
mano = unedate.substring(5,7);
p2 = Integer.parseInt(mano);
mano = unedate.substring(8,10);
p3 = Integer.parseInt(mano);
try
{
GregorianCalendar gc = new GregorianCalendar(p1, p2, p3);
gc.setLenient(false); // sans cette ligne, pas d'exception possible
// (true par defaut)
}
catch (Exception e) {
e.printStackTrace();
----
c'est bon a tous les coups.
Cordialement Dan
-
-
J'ai oublié de préciser, la date je la récupère sous forme de String grâce à la formule suivante :
public String traiter(HttpServletRequest req, HttpServletResponse rep){
...
String date = req.getParameter("date");
...
}
Donc serait-il possible de vérifier si le string récupérer par req.getParameter("date") répond au format yyyy-mm-dd ? -
-
Ok, j'ai compris ce que tu voulais dire par "date réelle". Désolé, la journée à été difficile !
Merci encore pour tes solutions que tu me proposes ! -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Une date qui existe / a existée (après 1901 par contre, c'est le seul hic) / existera (pas comme celle que j'ai mis dans la variable myDate)
-
Salut,
Je me rend compte que j'ai oublie de preciser que l'exception n'est declenchee qu'a l'extraction d'une des donnees
fournie par GregorianCalendar.
Exemples : System.out.println( gc.getTime() ); ou int annee = gc.get(Calendar.YEAR); etc...
------
try
{
GregorianCalendar gc = new GregorianCalendar(p1, p2, p3);
gc.setLenient(false); // sans cette ligne, pas d'exception possible
// (true par defaut)
System.out.println( gc.getTime() ); // "2007-95-26" avec cette date : exception
}
catch (Exception e) {
e.printStackTrace();
----
Dan -
Donc c'est bien la bonne version que j'ai mis.
C'est bien pour ça que j'ai mis :c.getTime();
De manière à ce qu'une exception soit levée si la date n'est pas bonne. C'est vrai que je n'ai pas précisé qu'il faut gérer les cas d'erreurs en catchant l'exception.