vérifier si la différence entre 2 dates est supérieure à 20 minutes

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.