Bonjour à tous,
le code ci-dessous me permet de lister les derniers jours de mois entre 2 dates, c'est à dire que si ma date de départ est 06.03.2012 et ma date de fin 12.12.2012 alors il me retourne:
31.03.2012
30.04.2012
...
30.11.2012
31.12.2012
voici le code:
il fonctionne très bien mais j'aurais souhaité un retour car je pense qu'il y avait bien plus simple et plus optimal (java/groovy n'est pas ma spécialité)
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 import java.util.Calendar; import java.text.*; // parameters startDate='06.03.2012'; endDate='12.12.2012' SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); // convert start and end params as Date Date startDateAsDate=sdf.parse(startDate); Date endDateAsDate=sdf.parse(endDate); Date currentDate=startDateAsDate; Calendar currCal=Calendar.getInstance(); Calendar endCal=Calendar.getInstance(); currYear=currentDate.format('yyyy').toInteger(); currMonth=currentDate.format('M').toInteger()-1; currDay=currentDate.format('M').toInteger(); endYear=endDateAsDate.format('yyyy').toInteger(); endMonth=endDateAsDate.format('M').toInteger()-1; endDay=endDateAsDate.format('M').toInteger(); currCal.set(currYear,currMonth,currDay); endCal.set(endYear,endMonth,endDay); endCal.add(Calendar.MONTH,1); while (currCal<=endCal) { currCal.set(Calendar.DAY_OF_MONTH,currCal.getActualMaximum(Calendar.DAY_OF_MONTH)); println sdf.format(currCal.getTime()); currCal.add(Calendar.MONTH,1); }
D'avance merci !
Partager