java里怎么判断时间重合_java 判断两个时间段是否重叠的案例
时间: 2023-08-08 20:05:48 浏览: 86
在 Java 中,可以使用 `LocalDateTime` 或 `Date` 类来表示时间。判断两个时间段是否重叠的方法可以采用以下方式:
1. 用 `before` 和 `after` 方法比较两个时间段的起止时间是否重叠。
```java
public boolean isOverlap(LocalDateTime start1, LocalDateTime end1, LocalDateTime start2, LocalDateTime end2) {
return start1.isBefore(end2) && start2.isBefore(end1);
}
```
2. 将时间段转换成时间戳,比较时间戳是否重叠。
```java
public boolean isOverlap(Date start1, Date end1, Date start2, Date end2) {
long st1 = start1.getTime();
long et1 = end1.getTime();
long st2 = start2.getTime();
long et2 = end2.getTime();
return (st1 <= et2) && (st2 <= et1);
}
```
需要注意的是,如果两个时间段恰好在边界处相接,也算作重叠。
相关问题
java判断两个时间段是否连续不重合
可以通过比较两个时间段的开始时间和结束时间来判断它们是否连续不重合。
假设有两个时间段A和B,A的开始时间为startA,结束时间为endA;B的开始时间为startB,结束时间为endB。
如果A的结束时间等于B的开始时间,或者A的结束时间小于B的开始时间但是A和B的时间段长度相同,那么A和B是连续不重合的。
代码实现:
```java
public boolean isContinuous(Date startA, Date endA, Date startB, Date endB) {
if (endA.equals(startB) || (endA.before(startB) && endA.getTime() - startA.getTime() == endB.getTime() - startB.getTime())) {
return true;
} else {
return false;
}
}
```
其中,Date是Java中表示日期和时间的类,可以通过SimpleDateFormat类将字符串转换为Date类型。在比较时间大小时,可以使用Date的getTime()方法将时间转换为毫秒数进行比较。
java判断两个时间段是否连续且不重合
可以先对两个时间段进行排序,然后比较两个时间段的结束时间和开始时间,如果结束时间小于等于开始时间,则不连续;如果结束时间大于开始时间,则再比较两个时间段的开始时间和结束时间,如果开始时间大于等于结束时间,则不重合;否则重合。
以下是示例代码:
```java
import java.text.SimpleDateFormat;
import java.util.Date;
public class TimeUtils {
/**
* 判断两个时间段是否连续且不重合
* @param startTime1 时间段1的开始时间
* @param endTime1 时间段1的结束时间
* @param startTime2 时间段2的开始时间
* @param endTime2 时间段2的结束时间
* @return 是否连续且不重合
*/
public static boolean isContinuousAndNotOverlap(Date startTime1, Date endTime1, Date startTime2, Date endTime2) {
// 对两个时间段进行排序
if (startTime1.after(endTime1)) {
Date temp = startTime1;
startTime1 = endTime1;
endTime1 = temp;
}
if (startTime2.after(endTime2)) {
Date temp = startTime2;
startTime2 = endTime2;
endTime2 = temp;
}
// 比较结束时间和开始时间
if (endTime1.getTime() <= startTime2.getTime()) {
// 不连续
return false;
} else {
// 比较开始时间和结束时间
return startTime1.getTime() >= endTime2.getTime() || endTime1.getTime() <= startTime2.getTime();
}
}
public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startTime1 = sdf.parse("2021-01-01 10:00:00");
Date endTime1 = sdf.parse("2021-01-01 12:00:00");
Date startTime2 = sdf.parse("2021-01-01 12:00:00");
Date endTime2 = sdf.parse("2021-01-01 14:00:00");
System.out.println(isContinuousAndNotOverlap(startTime1, endTime1, startTime2, endTime2)); // true
startTime1 = sdf.parse("2021-01-01 10:00:00");
endTime1 = sdf.parse("2021-01-01 12:00:00");
startTime2 = sdf.parse("2021-01-01 13:00:00");
endTime2 = sdf.parse("2021-01-01 14:00:00");
System.out.println(isContinuousAndNotOverlap(startTime1, endTime1, startTime2, endTime2)); // false
startTime1 = sdf.parse("2021-01-01 10:00:00");
endTime1 = sdf.parse("2021-01-01 12:00:00");
startTime2 = sdf.parse("2021-01-01 12:00:00");
endTime2 = sdf.parse("2021-01-01 13:00:00");
System.out.println(isContinuousAndNotOverlap(startTime1, endTime1, startTime2, endTime2)); // false
}
}
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)