首页 > 解决方案 > LocalDate 比较,获取两个日期之间的订单

问题描述

    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 中工作。

标签: javahibernatejpalocaldate

解决方案


我通常使用“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))

推荐阅读