Problème calcul nombre de jours entre 2 dates
volcomboy62
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
J'essaie de calculer le nombre de jours qu'il y a entre deux dates :
Integer NbreJours = (int) (date2.getTime() - (int) date1.getTime());
System.out.println("date2.getTime : " + date2.getTime());
System.out.println("date1.getTime : " + date1.getTime());
System.out.println("Différence : " + NbreJours);
// Différence en jours
NbreJours = (NbreJours / (1000 * 60 * 60 * 24) + 1);
System.out.println("Différence en jours : " + NbreJours);
Sachant que la date2 = ma date de fin (23/09/2013)
et date1 = ma date de début (29/08/2013)
jobtient le résultat suivant :
la date de début est : 29/08/2013
la date de fin est : 23/09/2013
date2.getTime : 1379887200000
date1.getTime : 1377727200000
Différence : -2134967296
Différence en jours : -23
ce qui est faux et si je met comme date de fin le 22/09/2013 j'obtient le bon résultat :
la date de début est : 29/08/2013
la date de fin est : 22/09/2013
date2.getTime : 1379800800000
date1.getTime : 1377727200000
Différence : 2073600000
Différence en jours : 25
Pouvez vous m'expliquer ce qu'il ce passe ? car là je ne comprend pas du tout ce qu'il ce passe ...
J'essaie de calculer le nombre de jours qu'il y a entre deux dates :
Integer NbreJours = (int) (date2.getTime() - (int) date1.getTime());
System.out.println("date2.getTime : " + date2.getTime());
System.out.println("date1.getTime : " + date1.getTime());
System.out.println("Différence : " + NbreJours);
// Différence en jours
NbreJours = (NbreJours / (1000 * 60 * 60 * 24) + 1);
System.out.println("Différence en jours : " + NbreJours);
Sachant que la date2 = ma date de fin (23/09/2013)
et date1 = ma date de début (29/08/2013)
jobtient le résultat suivant :
la date de début est : 29/08/2013
la date de fin est : 23/09/2013
date2.getTime : 1379887200000
date1.getTime : 1377727200000
Différence : -2134967296
Différence en jours : -23
ce qui est faux et si je met comme date de fin le 22/09/2013 j'obtient le bon résultat :
la date de début est : 29/08/2013
la date de fin est : 22/09/2013
date2.getTime : 1379800800000
date1.getTime : 1377727200000
Différence : 2073600000
Différence en jours : 25
Pouvez vous m'expliquer ce qu'il ce passe ? car là je ne comprend pas du tout ce qu'il ce passe ...
A voir également:
- Problème calcul nombre de jours entre 2 dates
- Nombre de jours entre deux dates excel - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Compte facebook suspendu 180 jours - Guide
- Calcul moyenne excel - Guide
- 2 ecran pc - Guide
1 réponse
Je suis pas mal certain que le problème réside dans la première ligne de code:
Dans ton cas, tes deux "getTime()" te retournent un nombre supérieur à la limite maximale du type de données "int". Cela a pour effet de "retrancher" des bits ce qui a de fortes probabilités de rendre ton nombre incorrect.
Je crois que tu aurais plus de chance si tu utilisais un type "Long" pour ta variable "NbreJours":
Integer NbreJours = (int) (date2.getTime() - (int) date1.getTime());
Java.util.Date.getTime()retourne un nombre de type "long" que tu convertis en "int".
Dans ton cas, tes deux "getTime()" te retournent un nombre supérieur à la limite maximale du type de données "int". Cela a pour effet de "retrancher" des bits ce qui a de fortes probabilités de rendre ton nombre incorrect.
Je crois que tu aurais plus de chance si tu utilisais un type "Long" pour ta variable "NbreJours":
Long NbreJours = date2.getTime() - date1.getTime();
Je ne savais pas qu'il y avait une limite pour des objets de type int
La valeur d'un int est comprise entre Integer.MIN_VALUE et Integer.MAX_VALUE.
Si tu "debordes" tu te retrouves à l'autre extrémité. Ainsi