java判断两个时间段是否有交集
时间: 2024-12-02 12:18:45 浏览: 20
在Java中,判断两个时间区间(例如开始时间和结束时间构成的时间段)是否有交集,通常需要将它们转换成集合或者数据结构来进行操作。这里可以考虑使用`java.time`包中的`LocalDateTime`类,以及集合类如`Interval`或自定义类来表示时间段。
首先,定义一个时间段类,包含开始时间和结束时间:
```java
import java.time.LocalDateTime;
import java.time.Duration;
public class TimeRange {
private LocalDateTime start;
private LocalDateTime end;
// 构造函数、getter和setter...
}
```
然后你可以创建两个`TimeRange`对象,并定义一个方法来检查它们是否有交集:
```java
public boolean hasIntersection(TimeRange range1, TimeRange range2) {
// 检查两个范围是否同时结束或者开始
if (range1.getEnd().equals(range2.getStart())) {
return true; // 如果两个端点相等,则有交集
}
// 比较结束时间与另一个开始时间的大小
Duration overlap = range1.getEnd().compareTo(range2.getStart());
// 如果结束时间大于等于另一个开始时间并且小于另一个结束时间,说明有交集
return overlap >= 0 && overlap < Duration.between(range1.getStart(), range2.getEnd());
}
// 使用示例:
TimeRange range1 = new TimeRange(LocalDateTime.of(2023, 1, 1, 9, 0), LocalDateTime.of(2023, 1, 1, 12, 0));
TimeRange range2 = new TimeRange(LocalDateTime.of(2023, 1, 1, 11, 0), LocalDateTime.of(2023, 1, 1, 14, 0));
if (hasIntersection(range1, range2)) {
System.out.println("两个时间段有交集");
} else {
System.out.println("两个时间段无交集");
}
阅读全文