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

Включите эту дату:

Я использую библиотеку Joda Time 2.1.

Я написал метод для сравнения, если заданная дата находится между диапазоном дат. Я хочу, чтобы он был включен в дату и дату начала. Я использовал LocalDate, так как я не хочу рассматривать часть даты только для части времени.

Ниже приведен код для него.

isDateBetweenRange(LocalDate start,LocalDate end,LocalDate target){

       System.out.println("Start Date : "
              +start.toDateTimeAtStartOfDay(DateTimeZone.forID("EST"));

       System.out.println("Target Date : "
              +targettoDateTimeAtStartOfDay(DateTimeZone.forID("EST"));

       System.out.println("End Date : "
              +end.toDateTimeAtStartOfDay(DateTimeZone.forID("EST"));

       System.out.println(target.isAfter(start));

       System.out.println(target.isBefore(end));
}

Выход вышеописанного метода:

Start Date: 2012-11-20T00:00:00.000-05:00
Target Date: 2012-11-20T00:00:00.000-05:00
End Date : 2012-11-21T00:00:00.000-05:00
target.isAfter(start) : false
target.isBefore(end) : true

Моя проблема target.isAfter(start) неверна, даже если дата target и start имеют одинаковые значения.

Я хочу, чтобы target >= start, но здесь он учитывает только target > start.
Я хочу это включительно.

Означает ли это, что метод isAfter находит совпадение исключительно?

Я прошел через javadoc для Joda Time, но ничего не нашел об этом.

4b9b3361

Ответ 1

Да, isAfter является эксклюзивным, иначе его, вероятно, назвали бы isEqualOrAfter или что-то подобное.

Решение: используйте вместо "не раньше" вместо "после" и "не после" вместо "до".

boolean isBetweenInclusive(LocalDate start, LocalDate end, LocalDate target) {
    return !target.isBefore(start) && !target.isAfter(end);
}