为什么LocalDate.plusDays在这里不起作用?

Arc*_*nes 2 java localdate

我正在尝试通过以下方式将日期范围划分为各个日期:

private static void splitDates(LocalDate dateFrom, LocalDate dateTo) {
    while (dateFrom.isBefore(dateTo) || dateFrom.isEqual(dateTo)) {
        System.out.println(dateFrom);
        dateFrom.plusDays(1L);
    }
}
Run Code Online (Sandbox Code Playgroud)

而且我不知道为什么dateFrom.plusDays(1L)不起作用,因为日期保持不变,所以循环变为无限。

Arn*_*aud 6

plusDays不会改变原始的LocalDate,您必须分配结果:

dateFrom = dateFrom.plusDays(1L);
Run Code Online (Sandbox Code Playgroud)

  • 很棒的超快速答案! (2认同)

小智 5

因为方法 plusDays 不会更改变量 dateFrom。你应该这样做:

dateFrom = dateFrom.plusDays(1L);
Run Code Online (Sandbox Code Playgroud)