Несколько месяцев назад я нашел эту ветку об итерациях по дням в java
Java 8 LocalDate - как получить все даты между двумя датами?
Иначал использовать класс DateRange:
public class DateRange implements Iterable<LocalDate> {
private final LocalDate startDate;
private final LocalDate endDate;
public DateRange(LocalDate startDate, LocalDate endDate) {
//check that range is valid (null, start < end)
this.startDate = startDate;
this.endDate = endDate;
}
@Override
public Iterator<LocalDate> iterator() {
return stream().iterator();
}
public Stream<LocalDate> stream() {
return Stream.iterate(startDate, d -> d.plusDays(1))
.limit(ChronoUnit.DAYS.between(startDate, endDate) + 1);
}
public List<LocalDate> toList() { //could also be built from the stream() method
List<LocalDate> dates = new ArrayList<>();
for (LocalDate d = startDate; !d.isAfter(endDate); d = d.plusDays(1)) {
dates.add(d);
}
return dates;
}
}
В любом случае, сегодня, отлаживая, я обнаружил, что это вообще не работает, мне было интересно, как итерация за неделю заняла так много времени.Просто чтобы узнать, что он повторял одни и те же дни несколько раз в случайном порядке.
Возможно, проблема в том, что я не понимаю, как это использовать ...
for (LocalDate date : new DateRange(thymeDate.getDate_a(), thymeDate.getDate_b())) {
List<Group_C> owners = getAllByDate(date);
groupList = composeGroup.composeGroupForRange(groupList, owners);
}
return GroupList;
}
Я также пытался DateRange.between()
как в примере, который не является функцией, поэтому не может быть использован?и создание нового нормального экземпляра.
DateRange range = new DateRange(dateA, dateB)
и @Autowire
ing класса DateRange.
Как бы выполнить итерации за заданные дни?