hello,
j ai un petit soucie, j aimerais recupéré le nombre de mois qui sépare deux Date
mais je ne sais pas quoi utiliser
merci
hello,
j ai un petit soucie, j aimerais recupéré le nombre de mois qui sépare deux Date
mais je ne sais pas quoi utiliser
merci
et bien le mieux est d'utiliser la classe calendar.
Le calcul de la différence de 2 dates et assez complexe (il y a d'ailleurs un topic assez intéressant sur le sujet. Faire une recherche sur "différence date" pour le trouver ... [EDIT] désolé j'ai la flemme de le chercher ...)
Par contre comme c'est juste une différence en nombre de mois tu dois pouvoir t'en sortir assez facilement.
Petite précision si 2 dates sont éloignées de 2 jours mais pas du même mois, tu veux que ça te renvoie 0 ou 1 ??
genre 01/01/2006 - 31/12/2005 = 1 ou 0 mois ? Tu vois ce que je veux dire ?
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 public static int differenceMoisEntre2Date(Calendar dateDepart, Calendar dateArrivee) { int mois = 0; if (dateDepart == null || dateArrivee == null) { return 0; } int nbAnnee = dateArrivee.get(Calendar.YEAR) - dateDepart.get(Calendar.YEAR); int nbMois = dateArrivee.get(Calendar.MONTH) - dateDepart.get(Calendar.MONTH); nbMois = nbMois + (12 *nbAnnee); return nbMois; }Fais rapidement mais normalement tu dois t'en sortir assez facilement avec la classe Calendar.
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 public static boolean differenceMois(Calendar dateSaisie, int min, int max) { int mois = 0; // la parametre dateNaissance est null ou la date est superieur a la date du jour if (dateSaisie == null) { return false; } Calendar dateJour = Calendar.getInstance(); // si plus d'une annee entre les 2 dates if (dateSaisie.get(Calendar.YEAR) - dateJour.get(Calendar.YEAR) > 0) { return false; } else { mois = dateSaisie.get(Calendar.MONTH) - dateJour.get(Calendar.MONTH); if (dateSaisie.get(Calendar.MONTH) == dateJour.get(Calendar.MONTH) + max) { if (dateSaisie.get(Calendar.DAY_OF_MONTH) > dateJour.get(Calendar.DAY_OF_MONTH)) { mois++; } } else { if (dateSaisie.get(Calendar.MONTH) == dateJour.get(Calendar.MONTH) + min) { if (dateSaisie.get(Calendar.DAY_OF_MONTH) < dateJour.get(Calendar.DAY_OF_MONTH)) { mois--; } } } } return (mois <= max) && (mois >= min); }
Partager