Dites que j'ai deux champs de date receiveDate et currentDate. Je veux vérifier si receiveDate était 5 jours avant currentDate. Ce que j'ai fait était de convertir les dates en millisecondes et ensuite comparer contre 5. Y at-il une meilleure façon de le faire? Si oui, comment et pourquoi le mien est-il moins meilleur? Merci.Comparaison des dates en millisecondes
méthode I écrit -
private static final double DAY_IN_MILLISECONDS = 86400000;
// Param date is the receivedDate
private long getDaysOld(final Date date) {
Calendar suppliedDate = Calendar.getInstance();
suppliedDate.setTime(date);
Calendar today = Calendar.getInstance();
today.setTime(currentDate);
double ageInMillis = (today.getTimeInMillis() - suppliedDate.getTimeInMillis());
double tempDouble;
if(isEqual(ageInMillis, 0.00) || isGreaterThan(Math.abs(ageInMillis), DAY_IN_MILLISECONDS)) {
tempDouble = ageInMillis/DAY_IN_MILLISECONDS;
} else {
tempDouble = DAY_IN_MILLISECONDS/ageInMillis;
}
long ageInDays = Math.round(tempDouble);
return ageInDays;
}
Alors j'ai quelque chose comme-
long daysOld = getDaysOld(receivedDate) ;
if(daysOld <= 5) {
.... some business code ....
}
Vous souciez-vous des changements de temps en raison de l'heure d'été? Deux fois par an, si vous ne faites pas attention, votre durée sera réduite à 4 heures ou portée à 6. –
En général, c'est une maxime utile à adopter: ne faites pas vos propres calculs de date/heure. –
Votre code est absolument fou. Pourquoi utilisez-vous les instances de calendrier pour passer de Date à un nombre de millisecondes? Pourquoi ageInMillis est un double? Que diable fait le bloc d'ailleurs? –