Bonjour,
je ne trouve pas comment calculer une date en
ajoutant un nb de jours ouvrés à une autre date. Merci de vos lumières.
Bonjour,
je ne trouve pas comment calculer une date en
ajoutant un nb de jours ouvrés à une autre date. Merci de vos lumières.
Tu va devoir rajouter autant de jour à un gregorian calendar que de jours ouvrés en les ajoutant un à un. et en ajoutant systématiquement des jours supplémentaires lorsque ce ne sont pas des jours ouvrés. (pour "sauter" les jours fériés)
bien sur il te faudra une liste des jours non-ouvrés pour faire çà
Les méthodes de Calendar qui vont te servir:
setTime() (pour définir le point de départ du calendrier, date à laquelle tu veux ajouter des jours)
add() (pour incrémenter un champ du Calendar)
get() (pour lire le jour en question et déterminer si il est férié)
getTime() (pour reconstruire un java.util.Date à partir de là)
Merci pour ton aide. Je poste ma solution si sa peut aider certain.
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 /** Définit le nombre de jour à ajouter au jour courant pour le prochain jour ouvré :<br> * Jeudi : 0<br> * Vendredi : 2<br> * Samedi : 1<br> * Dimanche : 0<br> * Le premier jour, celui en cours est sauté * @param dateInitiale * @param nbDayToAdd : nombre de jours à ajouter * @return nombre de jour */ public static int getNbJourOuvreToAdd(Date date, int nbDayToAdd) { Calendar cal = new GregorianCalendar(); cal.setTime(date); int nbNonOuvre=0; if(nbDayToAdd >=0){ for (int i=0; i<=nbDayToAdd;i++) { cal.add(Calendar.DAY_OF_YEAR, 1); if (isJourNonOuvre(cal)) nbNonOuvre++; } }else{ for (int i=0; i>=nbDayToAdd;i--) { cal.add(Calendar.DAY_OF_YEAR, -1); if (isJourNonOuvre(cal)) nbNonOuvre--; } } return nbNonOuvre+nbDayToAdd; } /** * Ajoute un nombre de jour à une date */ public static Date ajouterJour(Date date, int nbDayToAdd) { Calendar cal = new GregorianCalendar(); cal.setTime(date); cal.add(Calendar.DAY_OF_YEAR, nbDayToAdd); date = cal.getTime(); return cal.getTime(); }
Partager