Java判断时间段是否重叠
需求
当前有个核酸自助下单项目,要控制设置时间段内下单数量,每个时间段不能重叠
解决方法
如果要想当前时间段不与比较多时间段重复那么应该满足:
- 当前开始时间大于要比较时间段的结束时间或者当前结束时间小于要比较时间段的开始时间。
代码
/**
* @param s1
* @param e1
* @param s2
* @param e2
* @param isStrict 是否严格遵守不能重叠,例如如果为true 那么8:00-8:30 和8:30-9:00 时间段比较为true
* @return true重叠。false不重叠
*/
public static boolean isOverlap(LocalTime s1, LocalTime e1, LocalTime s2, LocalTime e2, boolean isStrict) {
if (s1.isAfter(e1) || s2.isAfter(e2)) {
throw new DateTimeException("endDate不能小于startDate");
}
if (isStrict) {
if (!(s1.compareTo(e2) >0 || e1.compareTo(s2) < 0)) {
return true;
}
} else {
if (!(s1.compareTo(e2) >=0 || e1.compareTo(s2) <= 0)) {
return true;
}
}
return false;
}