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.
Mais ça ne marche pas :
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 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())); } }
En fait, cela fait comme si le premier set(Calendar.DAY_OF_MONTH, 1) n'était pas pris en compte.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 D:\temp>java test_date sam. 01/12/2012
Du coup, pour essayer de comprendre, j'ai ajouté une étape :
Et là, cela fonctionne :
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 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())); } }
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 ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 D:\temp>java test_date jeu. 01/11/2012 sam. 03/11/2012
Une piste svp ?
Merci d'avance !
Alexis
Partager