Java 时间段重叠检测:Joda-Time 和 Java 8 API
在 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('时间段没有重叠');
}
原文地址: https://www.cveoy.top/t/topic/oXfQ 著作权归作者所有。请勿转载和采集!