Contole en java

Fermé
assia6 Messages postés 40 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 28 avril 2012 - 5 nov. 2009 à 22:27
sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 - 6 nov. 2009 à 23:53
Bonjour,
quelqun peut m aider comment effectuer un controle sur une date introduite?
j utilise [java] (Eclipse)
merci
A voir également:

6 réponses

sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 723
6 nov. 2009 à 10:26
Salut,

Pour compléter la réponse de Dan: on pourrait également faire un unique contrôle en utilisant un SimpleDateFormat avec, comme indiqué plus haut, un lenient à false. Exemple (pour un tableau de 4 éléments):

String[] dates = new String[] {"2009-11-06","2009-11-31","2009-1d1-06","200911-06"};
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd");
df.setLenient(false);

for (int i=0; i<dates.length; i++) {
	try {
		df.parse(dates[i]);
	} catch (java.text.ParseException e) {
		System.out.println("Date inacceptable: " + dates[i]);
		// e.printStackTrace();
	}
}

==> sortie à la console:

Date inacceptable: 2009-11-31
Date inacceptable: 2009-1d1-06
Date inacceptable: 200911-06


++
1
sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 723
6 nov. 2009 à 20:43
Gné ?

/me jette une bouée (dégonflée) à assia6 qui est en train de se noyer sur terre ferme.
1
assia6 Messages postés 40 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 28 avril 2012 2
6 nov. 2009 à 22:49
slt sandul, vs m avez donné un exemple avc 4 dates!!! ds une table hors moi je recupere ma date par un jTextField!!dslée je vois encore les choses en flou!!j n arrive pas à m en sortir!!merci
1
sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 723
6 nov. 2009 à 23:53
Les 4 dates dans un tableau ==> un exemple pour voir comment ça marche et quels sont les résultats avec différents inputs. Aucunement obligée de faire du copier-coller, tu sais ^^

Imagine maintenant que ton tableau a un seul élément (=à ta valeur que tu récupères avec un appel à getMonJTextField.getText()) ==> tu élimines la boucle for et le problème est résolu. Je t'ai donné tout ce dont tu as besoin, car tu garderas uniquement ceci
java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd");
df.setLenient(false);

try {
	// ici tu remplaces getMonJTextField avec la bonne méthode
	df.parse(getMonJTextField().getText());
} catch (java.text.ParseException e) {
	// et ici tu annonces l'utilisateur qu'il a bu trop de Heineken
	// et que cha ne va pas !!!
	System.out.println("Date inacceptable: " + dates[i]);
	// e.printStackTrace();
}


Alors ?
1

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

Posez votre question
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
5 nov. 2009 à 23:27
Bonsoir,
Quel contrôle voudrais-tu implémenter sur ta date?
C'est une instance de Date?

Cordialement,
0
assia6 Messages postés 40 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 28 avril 2012 2
5 nov. 2009 à 23:48
MERCI,
je veux savoir si la date introduite est correcte ou non selon le format je veux imposer le format suivant (AAAA-MM-JJ) comme ça je ne l autorise pas de saisir des lettres ou selon l existence i.e si l année est bicextile ou non!!!
0
Salut,

Tu peux d'abord contrôler le format de la date saisie en utilisant split("-") qui te permettra d'obtenir les 3 élements de la date.
Ensuite tu vérifies que tu obtiens bien 3 éléments (ce qui n'est vrai que si les 2 séparateurs - existent,
Puis tu verifies la longueur de ces 3 élements: 4 pour AAAA, 2 pour MM et JJ.

Il faut encore verifier que ces élements ne contiennent que du numérique.
Et comme je te conseille d'utiliser GregorianCalendar pour la suite du contrôle et que pour ce faire, il faut fournir 3 parametres int (disons p1 pour l'année, p2 pour le mois et p3 pour le jour) à GregorianCalendar, il faut profiter de la conversion String>>int pour en "catchant" savoir si c'est numérique ou pas.
Les autres contrôles seront éffectués À CONDITION D'UTILISER setLenient(false);

Si tu éprouves des difficultés envoi un petit (ou gros) S.O.S et nous en discuterons cas par cas.

Cordialement,

Dan
0
assia6 Messages postés 40 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 28 avril 2012 2
6 nov. 2009 à 20:07
S.O.S svp!!!!!!!!
0