Utilisation de la classe Calendar
Hello à tous,
je cherchais à faire quelques opérations sur des dates et je faisais quelques tests avec la classe Calendar pour comprendre son fonctionnement et notamment le fonctionnement de la méthode "set".
Problème: après mes tests, il y a un truc que je n'ai pas compris :)
Exemple simple : j'imaginais pouvoir trouver le premier samedi du mois avec quelque chose comme ça.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class test_date {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("EEE dd/MM/yyyy");
c.set(Calendar.DAY_OF_MONTH, 1); //premier jour du mois
c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); // > samedi
System.out.println(df.format(c.getTime()));
}
} |
Mais ça ne marche pas :
Code:
1 2
| D:\temp>java test_date
sam. 01/12/2012 |
En fait, cela fait comme si le premier set(Calendar.DAY_OF_MONTH, 1) n'était pas pris en compte.
Du coup, pour essayer de comprendre, j'ai ajouté une étape :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class test_date {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("EEE dd/MM/yyyy");
c.set(Calendar.DAY_OF_MONTH, 1); //premier jour du mois
System.out.println(df.format(c.getTime()));
c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); // > samedi
System.out.println(df.format(c.getTime()));
}
} |
Et là, cela fonctionne :
Code:
1 2 3
| D:\temp>java test_date
jeu. 01/11/2012
sam. 03/11/2012 |
Du coup, je me demande s'il n'y aurait pas un "truc" qui ferait que lorsqu'on utilise la méthode set, il faut d'une certaine manière forcer un recalcule pour que les autres champs se mettent à jour ? Mais je n'ai rien vu dans ce sens dans la doc ?
Une piste svp ?
Merci d'avance !
Alexis