| | |
| | | */ |
| | | public static boolean isInTimeRange(String timeRange) { |
| | | try { |
| | | // 分割开始时间和结束时间 |
| | | String[] times = timeRange.split("-"); |
| | | if (times.length != 2) { |
| | | throw new IllegalArgumentException("时间格式不正确,应为:HH:mm-HH:mm"); |
| | | } |
| | | |
| | | // 解析时间 |
| | | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("H:mm"); |
| | | LocalTime startTime = LocalTime.parse(times[0].trim(), formatter); |
| | | LocalTime endTime = LocalTime.parse(times[1].trim(), formatter); |
| | | LocalTime currentTime = LocalTime.now(); |
| | | |
| | | // 判断是否在时间区间内 |
| | | return !currentTime.isBefore(startTime) && !currentTime.isAfter(endTime); |
| | | boolean isInRange; |
| | | if (endTime.isBefore(startTime)) { |
| | | // 跨天情况,将结束时间视为次日 |
| | | isInRange = !currentTime.isBefore(startTime) || !currentTime.isAfter(endTime); |
| | | } else { |
| | | // 不跨天情况 |
| | | isInRange = !currentTime.isBefore(startTime) && !currentTime.isAfter(endTime); |
| | | } |
| | | |
| | | return isInRange; |
| | | |
| | | } catch (Exception e) { |
| | | throw new IllegalArgumentException("时间解析错误,请检查格式是否正确", e); |