查找时间的问题介于startTime和endTime之间。我有像这样的配置
timeframe1 = C1 | 04:00 | 11.59 timeframe2 = C2 | 20.00 | 03:59 timeframe3 = C3 | 12.00 | 19.59我需要获取currentime并检查它是否落在哪个timeFrame中,现在我正在做
Map<String, String> t1 = new HashMap(){{
t1.put("cust", "C1");
t1.put("startTime", "04:00");
t1.put("endTime", "11.59");
}}
Map<String, String> t2 = new HashMap(){{
t2.put("cust", "C1");
t2.put("startTime", "20.00");
t2.put("endTime", "03:59");
}}
Map<String, String> t3 = new HashMap(){{
t3.put("cust", "C1");
t3.put("startTime", "12.00");
t3.put("endTime", "19.59");
}}
List<Map<String, String> listValues = Arrays.asList(t1,t2,t3);
LocalDateTime currentTime = LocalDateTime.now(Clock.systemUTC());
Optional<Map<String, Object>> timeFrame = listValues.stream()
.filter(l -> {
LocalDateTime startTime = LocalDateTime.of(ld, LocalTime.parse(String.valueOf(l.get("startTime")))).atZone(ZoneOffset.UTC).toLocalDateTime();
LocalDateTime endTime = LocalDateTime.of(ld, LocalTime.parse(String.valueOf(l.get("endTime")))).atZone(ZoneOffset.UTC).toLocalDateTime();
return currentTime.isAfter(startTime) && currentTime.isBefore(endTime);
}).findFirst();
return timeFrame.get()
但是问题是->如果当前时间是21:00,那么它应该返回timeframe2地图详细信息
但由于endTime为03:59,因此条件currentTime.isAfter(startTime)&& currentTime.isBefore(endTime))失败。
请帮助如何找到正确的结果。
慕的地8271018
相关分类