Bonjour,

Je souhaite récupérer le nombre de jours qui séparent deux dates. Je ne veux cependant pas tenir compte des heures des deux dates, par exemple si je compare la date 01/01/2017 23:59 et 02/01/2017 00:01 je souhaite que cela me retourne quand même 1 jour car je considère que ce n'est pas le même jour (malgré les deux minutes de différence réelle entre ces deux dates).

J'ai, peut être bêtement, fait avec la fonction suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 
public static long daysBetween(Calendar startDate, Calendar endDate) {
        long millis = endDate.getTimeInMillis() - startDate.getTimeInMillis();
        return (int)Math.round((double)millis / 86400000);
}
Je me suis alors vite rendu compte que cela prenait en compte les heures dans la différence. J'ai alors essayé de ne garder que les jours/mois/année et de définir l'heure moi même afin d'éviter ce problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
 
public static long daysBetween(Calendar startDate, Calendar endDate) {
        startDate.set(Calendar.HOUR, 0);
        endDate.set(Calendar.HOUR, 24);
        startDate.set(Calendar.MINUTE, 0);
        endDate.set(Calendar.MINUTE, 0);
        startDate.set(Calendar.SECOND, 0);
        endDate.set(Calendar.SECOND, 0);
        long millis = endDate.getTimeInMillis() - startDate.getTimeInMillis();
        return (int)Math.round((double)millis / 86400000);
}
Ca marche effectivement un peu mieux, mais j'ai toujours quelques comportements étranges. Par exemple si nous sommes le 07/02 à 8h et que je passe ça à ma fonction avec la date 07/02, cela me retourne 1 jour de différence... Par contre quand on passe après 12h le 07/02 cela me retourne 0 jours de différence... Je ne comprend pas trop pourquoi cela prend toujours en compte l'heure du jour là dedans malgré mes tentatives de ne garder que les jour/mois/année...

Quelqu'un pourrait m'expliquer et éventuellement solutionner mon soucis ?

Merci d'avance !