1 回答
![?](http://img1.sycdn.imooc.com/54584c9c0001489602200220-100-100.jpg)
TA贡献1796条经验 获得超4个赞
以下应该完成这项工作(实际上很脏-您最好将其重构为单独的方法):
.filter(l -> {
LocalTime startTime = LocalTime.parse(l.get("startTime"));
LocalTime endTime = LocalTime.parse(l.get("endTime"));
LocalTime currentTime = LocalTime.now(Clock.systemUTC());
return startTime.isBefore(endTime)
? currentTime.isAfter(startTime) && currentTime.isBefore(endTime)
: currentTime.isAfter(startTime) || currentTime.isBefore(endTime);
})
编辑:这里一个重要的补充。您的时间范围内有漏洞,因为双方都是包容各方的。示例:当currentTime为19:59:31时,将NoSuchElementException抛出a,因为没有时间范围包含该时间。20:00:00也是一样。
因此,我建议进行endTime排它并将其指定为全时(例如20:00)。然后,您还需要将更currentTime.isAfter(startTime)改为!startTime.isBefore(currentTime),如下所示:
return startTime.isBefore(endTime)
? !startTime.isBefore(currentTime) && currentTime.isBefore(endTime)
: !startTime.isBefore(currentTime) || currentTime.isBefore(endTime);
添加回答
举报