DateRange迭代错误(代码取自SO)

时间:2018-12-03 10:09:22

标签: java spring-boot iteration localdate

几个月前,我发现了这个关于在Java中进行几天迭代的线程

Java 8 LocalDate - How do I get all dates between two dates?

并开始使用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设置DateRange类。

在给定的几天内如何迭代?

timeline in SysOut

1 个答案:

答案 0 :(得分:0)

这最终是双POST的问题,这是由于使用代理引起的。 DateRange方法一直很好... 您可以在另一个线程中看到双重POST问题的解决方案 Here

感谢Ole V.V.试图帮助:)