111 votes

Java : comment puis-je vérifier si une date se situe dans une certaine plage ?

J'ai une série de plages avec des dates de début et de fin. Je veux vérifier si une date se situe dans cette fourchette.

Date.before() etDate.after () semblent un peu gênantes à utiliser. Ce dont j'ai vraiment besoin, c'est de quelque chose comme ce pseudocode :

boolean isWithinRange(Date testDate) {
    return testDate >= startDate && testDate <= endDate;
}

Je ne sais pas si c'est pertinent, mais les dates que je sors de la base de données ont des horodatages.

182voto

Paul Tomblin Points 83687
boolean isWithinRange(Date testDate) {
   return !(testDate.before(startDate) || testDate.after(endDate));
}

Ça ne me semble pas si gênant. Notez que je l'ai écrit de cette façon au lieu de

return testDate.after(startDate) && testDate.before(endDate);

cela fonctionnerait même si testDate était exactement égal à l'un des cas finaux.

18voto

MBCook Points 8316

C'est la bonne façon. Les calendriers fonctionnent de la même manière. Le mieux que je puisse vous offrir (d'après votre exemple) est le suivant :

boolean isWithinRange(Date testDate) {
    return testDate.getTime() >= startDate.getTime() &&
             testDate.getTime() <= endDate.getTime();
}

Date.getTime() retourne le nombre de millisecondes depuis le 1/1/1970 00:00:00 GMT, et est long donc il est facilement comparable.

4voto

Rahul Points 5117

Une façon simple est de convertir les dates en millisecondes après le 1er janvier 1970 (utilisez Date.getTime ()) et ensuite de comparer ces valeurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X