Salut, j'ai une chaine de caracteres qui represente une date du format jj/mm/aa, je voudrais imposer un controle sur la saisie et empecher de saisir des dates comme 30/02/07?puisque elle n'existe jamais.
merci.
Salut, j'ai une chaine de caracteres qui represente une date du format jj/mm/aa, je voudrais imposer un controle sur la saisie et empecher de saisir des dates comme 30/02/07?puisque elle n'existe jamais.
merci.
Faire un controle dans quoi? Une appli? En web?
Quel est ton probleme?
Il te suffit de récupérer la date et de regarder si cette date est valide, nan?
Salut, je te propose une solution.
Faire 3 combobox, une pour le jour, une pour le mois et l'autre pour l'année. Suivant le mois et/ou l'année choisie, le nombre de jours dans la première combo est rechargé du coup si ce n'est pas une année bissectile, il ne pourra y avoir de 29 février par exemple. Ca peut paraître lourd car à chaque changement de mois et/ou d'année, il faut recharger les items de la première combo mais ça t'évite ainsi une vérification plus tard sur un bouton de validation. C'est à toi de voir![]()
:
http://java.developpez.com/faq/java/...G_parse_string
et tu cathes l'exception que lance le parse quand le format n'est pas correct, puis agis en conséquence
Plus précisement :
Comment forcer le parsing d'une Date à échouer en cas de Date incorrecte ?
.
Je ne répondrai à aucune question technique par MP.
Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
Enfin, quand une solution a été trouvée à votre problème pensez au tag :resolu:
Cours Dvp : http://ydisanto.developpez.com
Blog : http://yann-disanto.blogspot.com/
Page perso : http://yann-disanto.fr
Et plutot que de retourner une grosse exception toute moche, tu peux même utiliser les expressions régulières, notemment celle fournie je ne sais plus où sur le site de sun.
code de la fonction :
retourne vrai si la string date passée en parametre (de type "JJ/MM/AAAA") est valide, false sinon. Elle gere même les années bissextiles
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 public static boolean valideDate(String date_tmp) { String date_finale; String jour; String mois; String annee; jour = date_tmp.substring(0, 1) + date_tmp.substring(1, 2); mois = date_tmp.substring(3, 4) + date_tmp.substring(4, 5); annee = date_tmp.substring(6, 7) + date_tmp.substring(7, 8) + date_tmp.substring(8, 9) + date_tmp.substring(9, 10); date_finale = jour + "/" + mois + "/" + annee; String DatePattern = "^(?:(31)(\\D)(0?[13578]|1[02])\\2|(29|30)(\\D)(0?[13-9]|1[0-2])\\5|(0?[1-9]|1\\d|2[0-8])(\\D)(0?[1-9]|1[0-2])\\8)((?:1[6-9]|[2-9]\\d)?\\d{2})$|^(29)(\\D)(0?2)\\12((?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:16|[2468][048]|[3579][26])00)$"; if(date_finale.matches(DatePattern)) return true; else return false; }.
Fred
bonjour,
il existe deux type de solution possible :
- côté client : html ou javascript ( évite un aller retour vers le serveur avec des donnèes fausses)
- côté serveur : java (regex).
Cordialement
Partager