Controle du format d'une date en java

Résolu/Fermé
Niels - 7 mars 2008 à 15:58
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 10 mars 2008 à 21:13
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
A voir également:

7 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 mars 2008 à 16:11
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)
	}

2
Utilisateur anonyme
8 mars 2008 à 07:38
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
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > Utilisateur anonyme
10 mars 2008 à 13:07
Arf, c'est qu'il s'agit d'une ancienne version qui ne fonctionne pas alors. Je vais voir si retrouve celle qui marche ^^
0
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 ?
0
Salut kij_82

Qu'appelles-tu une "date réelle" ?
0
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
7 mars 2008 à 16:19
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)
0
Utilisateur anonyme
10 mars 2008 à 18:46
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
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
10 mars 2008 à 21:13
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.
0