java - 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 中工作。
解决方案
我通常使用“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))
推荐阅读
- postgresql - 每当在 Google Cloud SQL 中插入或更新数据时,是否可以向 Google Pub/Sub 发布消息?
- c++ - 模板化类数组的参数推导隐式初始化
- aix - “nm”的输出包括一些以“.”开头的符号。在 AIX 上,它是什么?
- spring - 本地主机上的 Spring Boot HTTPS
- c++ - 在运行时分配模板变量
- python - python discord 音乐机器人 youtube_dl
- flutter - 如何停止导航器重新加载视图?
- javascript - 如何突出显示jQuery滑块中的选定区域?
- android - 如何为 Android 中的 2 路数据绑定制作合适的绑定适配器
- javascript - 如何在 Node.js 中导入 util 模块?