簡體   English   中英

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中使用。

我通常使用“不早於”作為“在……上或之后”的簡短表達。 反過來:

    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的調用替換isAfterisBefore並檢查int返回值。 代碼不太清晰,但仍然可以理解。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM