Création
d'entreprise
Posez votre question Signaler

Controle du format d'une date en java [Résolu]

Niels - Dernière réponse le 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
Lire la suite 

Controle du format d'une date en java »

9 réponses
Réponse
+1
moins plus
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)
	}

danimo- 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
kij_82- 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 ^^
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
Salut kij_82

Qu'appelles-tu une "date réelle" ?
Ajouter un commentaire
Réponse
+0
moins plus
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 !
Ajouter un commentaire
Réponse
+0
moins plus
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)
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « Controle du format d'une date en java » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?