Bonjour,
GregorianCalendar test = new GregorianCalendar(annee,mois -1,jour);
Ce qu'attend Gregorian... c'est :
pour le jour un numéro de jour 1 à 28 ou 29 pour février,
1 à 30 ou 31 pour les autres mois,
pour le mois un numéro du mois de 0 (janvier) à 11 (décembre),
pour l'année un int quelconque.
Si on entre par exemple 1 puis 12 puis 2008 donc 12 pour décembre (ceci est un exemple qui n'est pas choisi au hazard),
on doit initialiser la date comme ceci :
GregorianCalendar test = new GregorianCalendar(2008, 11, 1);
SANS
si on met 12 pour le paramètre mois, c'est bien entendu accepté,
mais c'est comme si on faisait une addition de 1 sur le mois et,
au get du mois, on récupère 0 soit janvier, mais aussi 2009 pour l'année,(dans cet exemple le jour est inchangé et reste à 1).
par contre AVEC
il y a exception puisque on dépasse la valeur limite maxi du mois qui est 11.
Ceci pour l'entrée des paramètres.
De la même manière, à la lecture (avec ou sans setLenient)
mois = test.get(GregorianCalendar.MONTH);
pour décembre celà donne 11 d'où la nécessité de faire ++ avant d'envoyer le résultat.
Si ce n'est pas clair, n'hésites pas.
Cordialement et bonne année à tous.
Dan
Partager