LocalDate比较,获取两个日期之间的订单

LocalDate comparison, getting orders between two dates

    public List<WorkItem> getWorkItemsByDate(String startDate, String endDate) throws ParseException {
    LocalDate parsedStartDate = LocalDate.parse(startDate);
    LocalDate parsedEndDate = LocalDate.parse(endDate);
    return workItemRepository.findAll().stream().filter(w -> w.getUpdateDate().isAfter(parsedStartDate) &&
                                                w.getUpdateDate().isBefore(parsedEndDate))
                                                .collect(Collectors.toList());
}

我有两个日期,我想比较两个日期并找到这些日期的所有工作项(具有 LocalDate)。 我有一个问题,但我不知道如何检查同一日期。 当你在我的代码中 运行 一个日期时,它工作正常,直到你写下该项目的创建日期,然后它才不起作用。

我如何使用 2018-05-28 - 2018-05-28 进行这项工作,如果这些项目是在这一天创建的,它将无法在我的 lambda 中工作。

如果日期是同一天,则它既不是之前也不是之后,因此在这些情况下它将 return 为假。

您可以将 isAfterisBefore 替换为调用 compareTo 并检查 int return 值。代码不太清楚,但仍然可以理解。

.filter(w -> w.getUpdateDate().compareTo(parsedStartDate) >= 0 && w.getUpdateDate().compareTo(parsedEndDate) <= 0)

我通常使用“not before”作为“on or after”的缩写。反之亦然:

    w -> ! w.getUpdateDate().isBefore(parsedStartDate)
            && ! w.getUpdateDate().isAfter(parsedEndDate)

看个人口味当然可以用更罗嗦但也更直接的

    w -> (w.getUpdateDate().isEqual(parsedStartDate) || w.getUpdateDate().isAfter(parsedStartDate))
            && (w.getUpdateDate().isBefore(parsedEndDate) || w.getUpdateDate().isEqual(parsedEndDate))