下面的操作应该完成(尽管它很脏-您最好将它重构为一个单独的方法):
.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
被抛出,因为没有时间框架包含此类时间。20: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);