Недостаток логики в for
loop
Вы добавляете дни к предыдущей дате , а не к дате начала .
В вашем цикле i
проходит через значения от 0 до 6. Вы начинаете с воскресенья, 21 октября. В первый раз в вашем цикле вы добавляете 0 дней, поэтому 21 октября остается верным (правильно).В следующий раз, когда вы добавите 1 день, получите 22 октября, также верно для понедельника.В следующий раз вы добавите 2 дня и получите 24 октября. Затем вы добавите 3 дня, 4 дня и т. Д. Это объясняет ваши результаты.
Два возможных исправления.Измените это:
localDate = localDate.plusDays( i ) ;
dates.add( localDate ) ;
… на это:
LocalDate ld = localDate.plusDays( i ) ; // Add `i` number of days to the *start* date, not the incrementing date.
dates.add( ld ) ;
… или это:
dates.add( localDate ) ;
localDate = localDate.plusDays( 1 ) ; // only add 1 day to previous date
В первом случае этовероятно, лучше всего изменить имя переменной localDate
на startDate
для ясности.