在 Java 中,可以使用 Joda-Time 库或者 Java 8 的新日期时间 API 来比较两个时间段是否有重叠。

使用 Joda-Time 库:

Joda-Time 库提供了 Interval 类来表示时间段,可以使用其 overlap 方法来比较两个时间段是否有重叠。

示例代码:

import org.joda.time.Interval;
import org.joda.time.DateTime;

Interval interval1 = new Interval(new DateTime(2021, 6, 1, 10, 0), new DateTime(2021, 6, 1, 12, 0));
Interval interval2 = new Interval(new DateTime(2021, 6, 1, 11, 0), new DateTime(2021, 6, 1, 13, 0));

if (interval1.overlaps(interval2)) {
    System.out.println('时间段有重叠');
} else {
    System.out.println('时间段没有重叠');
}

使用 Java 8 的新日期时间 API:

Java 8 的新日期时间 API 提供了 LocalDateTime 和 Period 类来表示时间段,可以使用其 isBefore、isAfter 和 overlaps 方法来比较两个时间段是否有重叠。

示例代码:

import java.time.LocalDateTime;
import java.time.Period;

LocalDateTime start1 = LocalDateTime.of(2021, 6, 1, 10, 0);
LocalDateTime end1 = LocalDateTime.of(2021, 6, 1, 12, 0);
LocalDateTime start2 = LocalDateTime.of(2021, 6, 1, 11, 0);
LocalDateTime end2 = LocalDateTime.of(2021, 6, 1, 13, 0);

Period period1 = Period.between(start1.toLocalDate(), end1.toLocalDate());
Period period2 = Period.between(start2.toLocalDate(), end2.toLocalDate());

if (start1.isBefore(end2) && start2.isBefore(end1)) {
    System.out.println('时间段有重叠');
} else {
    System.out.println('时间段没有重叠');
}
Java 时间段重叠检测:Joda-Time 和 Java 8 API

原文地址: https://www.cveoy.top/t/topic/oXfQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录