Подтвердить что ты не робот

Использование Joda, Как определить, установлена ​​ли заданная дата между временем x и временем, на 3 часа раньше, чем x?

Каков самый простой способ использования времени Joda и получить что-то вроде следующего поведения:

public boolean check( DateTime checkTime )
{
    DateTime someTime = new DateTime(); //set to "now" for sake of example
    return checkTime.isBefore( someTime ) && checkTime.notMoreThanThreeHoursBefore( someTime );
}

Итак, если someTime установлено в 15:00, а checkTime установлено в 12:15, оно должно возвращать true.

Если для параметра someTime установлено значение 15:00 и checkTime установлено значение 11:45, оно должно возвращать значение false, поскольку checkTime составляет более 3 часов до someTime.

Если для параметра someTime установлено значение 15:00 и checkTime установлено значение 15:15, оно должно возвращать значение false, поскольку checkTime после someTime.

4b9b3361

Ответ 1

После некоторых игр я нашел это, которое прекрасно читается:

return new Interval( someTime.minusHours( 3 ), someTime ).contains( checkTime );

Ответ 2

Легко:

DateTime someTime = new DateTime();
DateTime earliest = someTime.minusHours(3);

if (earliest.compareTo(checkTime) <= 0 && checkTime.compareTo(someTime) < 0)

Я использовал compareTo как нет isBeforeOrEqual или isAfterOrEqual - но вы можете использовать compareTo для любого отношения.

Я подозреваю, что это было просто minusHours, что вы после этого:)