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 为假。
您可以将 isAfter
和 isBefore
替换为调用 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))
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 为假。
您可以将 isAfter
和 isBefore
替换为调用 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))