Как вычесть localDate из другой LocalDate - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь подсчитать количество дней между двумя локальными датами

Я черпаю вдохновение из этого ответа: { ссылка } на этот вопрос Определите, перекрываются ли два диапазона дат

Проблема в том, что в этом вопросе используется dateTime, который, как я считаю, устарел, следовательно, причина использования localDate.

Кто-нибудь знает о подобном способе реализации алгоритма в приведенном выше вместо этого ответьте с использованием localDate.

Метод минус не позволяет вычитать другой localDate.

Я пытался использовать

ChoronoUnit.DAYS.between(LD1, LD2.plusDays(1)) //include the final day in the count

, но бывают случаи, когда это приводит к отрицательное число, поэтому алгоритм ломается, потому что он выбирает наименьшее число, поскольку количество дней перекрывается

1 Ответ

0 голосов
/ 01 мая 2020

Андреас уже дал ответ в комментарии: сначала нужно взять абсолютное значение разницы в днях, а затем добавить 1, чтобы счетчик включал дату начала и окончания.

public static long daysBetweenInclusive(LocalDate ld1, LocalDate ld2) {
    return Math.abs(ChronoUnit.DAYS.between(ld1, ld2)) + 1;
}

Давайте попробуйте:

    LocalDate ld1 = LocalDate.of(2020, Month.MAY, 4);
    System.out.println(daysBetweenInclusive(ld1, LocalDate.of(2020, Month.MAY, 2)));
    System.out.println(daysBetweenInclusive(ld1, ld1));
    System.out.println(daysBetweenInclusive(ld1, LocalDate.of(2020, Month.MAY, 7)));

Вывод:

3
1
4
...