Как проверить, что разница между двумя датами превышает 20 минут? - PullRequest
34 голосов
/ 16 августа 2011

У меня есть datetime в переменной previous. Теперь я хочу проверить, было ли предыдущее время более двадцати минут до текущего времени.

Date previous = myobj.getPreviousDate();

Date now = new Date();

//check if previous was before 20 minutes from now ie now-previous >=20

Как мы можем это сделать?

Ответы [ 5 ]

63 голосов
/ 16 августа 2011

Используйте

if (now.getTime() - previous.getTime() >= 20*60*1000) {
    ...
}

Или, более подробный, но, возможно, немного легче читать:

import static java.util.concurrent.TimeUnit.*;

...

long MAX_DURATION = MILLISECONDS.convert(20, MINUTES);

long duration = now.getTime() - previous.getTime();

if (duration >= MAX_DURATION) {
    ...
}
20 голосов
/ 16 августа 2011

Использование Joda Time :

boolean result = Minutes.minutesBetween(new DateTime(previous), new DateTime())
                        .isGreaterThan(Minutes.minutes(20));
6 голосов
/ 16 августа 2011

Вы должны действительно использовать объект календаря вместо даты:

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
}
5 голосов
/ 27 октября 2016

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);
    }
}
1 голос
/ 16 августа 2011

Получите время в миллисекундах и проверьте разницу:

long diff = now.getTime() - previous.getTime();
if (diff > 20L * 60 * 1000) {
    // ...
}

Другим решением может быть использование времени Joda.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...