Salut!
J'ai écrit la methode suivante qui permet d'ajouter ou de retrancher un nombre de jours ouvrables à une date(sans tenir compte des jours fériés).
Code :
- public static Date dateAddIgnoreWeekEnd(Date aDate, int nbDay) {
- GregorianCalendar eD = new GregorianCalendar();
- eD.setTime(aDate);
- int offset = 1;
- int offsetSunday = 1;
- int offsetSaturday = 2;
- if (nbDay < 0) {
- offset = -1;
- offsetSunday = -2;
- offsetSaturday = -1;
- }
- for (int i = 1; i <= Math.abs(nbDay); i++) {
- eD.add(GregorianCalendar.DATE, offset);
- if (eD.get(eD.DAY_OF_WEEK) == eD.SATURDAY) {
- eD.add(GregorianCalendar.DATE, offsetSaturday);
- } else if (eD.get(eD.DAY_OF_WEEK) == eD.SUNDAY) {
- eD.add(GregorianCalendar.DATE, offsetSunday);
- }
- }
- return eD.getTime();
- }
|
Et bon, je n'aime pas ce code. Est-il possible d'éviter l'itération (for i...)?
Je me suis pris la tête un moment avec des divisions entières et des modulos, mais sans grand succès...