以上代码优化下,需要传入6个参数,第一个时间段的开始时间,第一个时间段的结束时间,第二个时间段的开始时间,第二个时间段的结束时间,要检查的时间段的开始时间,要检查的时间段的结束时间,java实现,考虑跨夜
时间: 2023-09-12 18:12:56 浏览: 75
以下是一个优化后的实现,可以跨夜并且只需要传入两个时间段和要检查的时间段:
```java
import java.time.LocalTime;
public class TimeUtils {
public static boolean isTimeInRange(LocalTime start1, LocalTime end1, LocalTime start2, LocalTime end2, LocalTime checkStart, LocalTime checkEnd) {
// 转换为秒数
long start1Seconds = start1.toSecondOfDay();
long end1Seconds = end1.toSecondOfDay();
long start2Seconds = start2.toSecondOfDay();
long end2Seconds = end2.toSecondOfDay();
long checkStartSeconds = checkStart.toSecondOfDay();
long checkEndSeconds = checkEnd.toSecondOfDay();
// 处理跨夜情况
if (end1.isBefore(start1)) {
end1Seconds += 24 * 60 * 60;
}
if (end2.isBefore(start2)) {
end2Seconds += 24 * 60 * 60;
}
if (checkEnd.isBefore(checkStart)) {
checkEndSeconds += 24 * 60 * 60;
}
// 判断是否在时间段内
if (checkStartSeconds >= start1Seconds && checkEndSeconds <= end1Seconds) {
return true;
}
if (checkStartSeconds >= start2Seconds && checkEndSeconds <= end2Seconds) {
return true;
}
return false;
}
}
```
这个方法将每个时间段转换为秒数进行比较,处理跨夜情况时,将结束时间加上 24 小时的秒数。最后,判断要检查的时间段是否在两个时间段内即可。
阅读全文