如何检查一个时间段是否与同一天的另一个时间段重叠。
例如,
- 上午 7:00 至上午 10:30 与上午 10:00 至上午 11:30 重叠
- 上午 7:00 至上午 10:30 与上午 8:00 至上午 9:00 重叠
- 上午 7:00 至上午 10:30 与上午 5:00 至上午 8:00 重叠
最佳答案
有一个简单的解决方案,此处表示为实用方法:
public static boolean isOverlapping(Date start1, Date end1, Date start2, Date end2) {
return start1.before(end2) && start2.before(end1);
}
此代码要求两个周期之间至少共享一毫秒才能返回 true
。
如果相邻时间段被视为“重叠”(例如 10:00-10:30 和 10:30-11:00),则需要稍微调整逻辑:
public static boolean isOverlapping(Date start1, Date end1, Date start2, Date end2) {
return !start1.after(end2) && !start2.after(end1);
}
此逻辑更常出现在数据库查询中,但相同的方法适用于任何上下文。
一旦你意识到它有多么简单,你首先会踢自己一脚,然后把它存入银行!
关于java - 如何在java中检查一个时间段是否与另一个时间段重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58487381/