java - 如何在java中检查一个时间段是否与另一个时间段重叠

标签 java time

如何检查一个时间段是否与同一天的另一个时间段重叠。

例如,

  1. 上午 7:00 至上午 10:30 与上午 10:00 至上午 11:30 重叠
  2. 上午 7:00 至上午 10:30 与上午 8:00 至上午 9:00 重叠
  3. 上午 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/

相关文章:

java - 如何使用 LIKE 执行好友搜索而不显示好友列表中已有的好友?

java - Caused by : java. lang.IllegalStateException: 请求聚合时必须指定有效的分桶策略

java - 可嵌入和 ElementCollection 嵌套

parsing - 线性时间通用解析器

Javascript:在没有 Sum 的情况下添加数字?

java - 如何从 Java 中的文件的每一行读取第三个值?

java - Java中如何随机选择字母?

c# - 如何记录计算机之间的相对时间?

javascript - 对毫秒数组求和

c++ - 哪种方法更好,性能明智