Bonjour,

Je rencontre de grandes difficultés avec la fonction set de GregorianCalendar quand il s'agit de changer le jour de la semaine. Je n'arrive pas toujours à reproduire le comportement qui me paraît suspect.

Après trois bonnes heures de tatonnement pour le reproduire , j'en arrive à cela :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");       
GregorianCalendar ld_date = (GregorianCalendar)date.clone();
String ls_date = simpleDateFormat.format(ld_date.getTime());
       ld_date.set(GregorianCalendar.DAY_OF_WEEK,GregorianCalendar.TUESDAY);
ls_date = simpleDateFormat.format(ld_date.getTime());
En paramètre au code de la fonction ci-dessus je transmet date une instance de GregorianCalendar, dont la valeur est le 11 février 2007 00:00:00

La variable ls_date contient la chaîne de caractère 2007-02-06. C'est juste, n'est-ce-pas ?

Je modifie mon code pour obtenir :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");       
GregorianCalendar ld_date = (GregorianCalendar)date.clone();
//String ls_date = simpleDateFormat.format(ld_date.getTime());
       ld_date.set(GregorianCalendar.DAY_OF_WEEK,GregorianCalendar.TUESDAY);
String ls_date = simpleDateFormat.format(ld_date.getTime());
La variable ls_date contient la chaîne de caractère 2007-02-11. C'est étonnant, non ?

Voyez-vous une explication à cela ?
Parvenez-vous à reproduire ce constat ?