J’ai une date / heure dans une variable précédente. Maintenant, je veux vérifier si la date / heure précédente est avant vingt minutes à partir de l’heure actuelle. Comment puis-je le faire?
Date previous = myobj.getPreviousDate(); Date now = new Date(); //check if previous was before 20 minutes from now ie now-previous >=20
Comment pouvons-nous le faire?
Utilisation
if (now.getTime() - previous.getTime() >= 20*60*1000) { ... }
Ou, plus verbeux, mais peut-être un peu plus facile à lire:
import static java.util.concurrent.TimeUnit.*; ... long MAX_DURATION = MILLISECONDS.convert(20, MINUTES); long duration = now.getTime() - previous.getTime(); if (duration >= MAX_DURATION) { ... }
Utilisation de Joda Time :
boolean result = Minutes.minutesBetween(new DateTime(previous), new DateTime()) .isGreaterThan(Minutes.minutes(20));
Vous devriez vraiment utiliser l’object Calendar au lieu de Date:
Calendar previous = Calendar.getInstance(); previous.setTime(myobj.getPreviousDate()); Calendar now = Calendar.getInstance(); long diff = now.getTimeInMillis() - previous.getTimeInMillis(); if(diff >= 20 * 60 * 1000) { //at least 20 minutes difference }
Solution Java 8:
private static boolean isAtleastTwentyMinutesAgo(Date date) { Instant instant = Instant.ofEpochMilli(date.getTime()); Instant twentyMinutesAgo = Instant.now().minus(Duration.ofMinutes(20)); try { return instant.isBefore(twentyMinutesAgo); } catch (IOException e) { throw new IllegalStateException(e); } }
Obtenez les temps en millisecondes et vérifiez la différence:
long diff = now.getTime() - previous.getTime(); if (diff > 20L * 60 * 1000) { // ... }
Une autre solution pourrait être d’utiliser le temps Joda.