Problème lors du calcul entre 2 dates
Bonjour,
J'avais besoin d'une fonction java qui me permettait de calculer le nombre de jour en 2 deux dates. Après une recherche sur Internet, j'avais trouvé ce code.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| // calcul du nombre de jours de la période
long CONST_DURATION_OF_DAY = 1000l * 60 * 60 * 24;
Calendar calendar1 = new GregorianCalendar();
calendar1.set(Calendar.YEAR, Integer.parseInt(getDECOMPTE_PERIODE_DEBUT().getData().substring(4,8)));
calendar1.set(Calendar.MONTH, Integer.parseInt(getDECOMPTE_PERIODE_DEBUT().getData().substring(2,4))-1);
calendar1.set(Calendar.DAY_OF_MONTH, Integer.parseInt(getDECOMPTE_PERIODE_DEBUT().getData().substring(0,2)));
Date date1 = calendar1.getTime();
Calendar calendar2 = new GregorianCalendar();
calendar2.set(Calendar.YEAR, Integer.parseInt(getDECOMPTE_PERIODE_FIN().getData().substring(4,8)));
calendar2.set(Calendar.MONTH, Integer.parseInt(getDECOMPTE_PERIODE_FIN().getData().substring(2,4))-1);
calendar2.set(Calendar.DAY_OF_MONTH, Integer.parseInt(getDECOMPTE_PERIODE_FIN().getData().substring(0,2)));
Date date2 = calendar2.getTime();
// Différence
long diff = Math.abs(date2.getTime() - date1.getTime());
long numberOfDay = (long)diff/CONST_DURATION_OF_DAY; |
Celui-ci marche parfaitement sauf pour le mois de mars. Si j'indique du 1er au 31 mars 2010, la fonction me retourne 29 jours au lieu des 30 jours. J'imagine que c'est un problème de millisecondes.
Quelqu'un a-t-il eu le même problème ?
Merci d'avance pour toutes réponses.
B. Mathieu