[英]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中使用。
我通常使用“不早於”作為“在……上或之后”的簡短表達。 反過來:
w -> ! w.getUpdateDate().isBefore(parsedStartDate)
&& ! w.getUpdateDate().isAfter(parsedEndDate)
當然,根據口味,您可能會使用更羅word的詞,但也更直接
w -> (w.getUpdateDate().isEqual(parsedStartDate) || w.getUpdateDate().isAfter(parsedStartDate))
&& (w.getUpdateDate().isBefore(parsedEndDate) || w.getUpdateDate().isEqual(parsedEndDate))
如果該天不是同一天,那么在這種情況下,它將返回false。
您可以用compareTo
的調用替換isAfter
和isBefore
並檢查int
返回值。 代碼不太清晰,但仍然可以理解。
.filter(w -> w.getUpdateDate().compareTo(parsedStartDate) >= 0 && w.getUpdateDate().compareTo(parsedEndDate) <= 0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.