java判断两个时间段是否连续不重合
时间: 2023-10-08 14:11:11 浏览: 118
可以通过比较两个时间段的开始时间和结束时间来判断它们是否连续不重合。
假设有两个时间段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
}
}
```
java里怎么判断时间重合_java 判断两个时间段是否重叠的案例
要判断两个时间段是否重叠,可以比较它们的开始时间和结束时间。具体实现可以参考以下代码:
```java
public static boolean isTimeOverlap(Date start1, Date end1, Date start2, Date end2) {
if (start1.getTime() >= end2.getTime() || start2.getTime() >= end1.getTime()) {
// 如果时间段1的开始时间晚于等于时间段2的结束时间,或者时间段2的开始时间晚于等于时间段1的结束时间,那么两个时间段不重叠
return false;
}
// 否则,两个时间段重叠
return true;
}
```
在这个方法中,我们将两个时间段表示为四个日期对象:时间段1的开始时间start1和结束时间end1,时间段2的开始时间start2和结束时间end2。如果时间段1的开始时间晚于等于时间段2的结束时间,或者时间段2的开始时间晚于等于时间段1的结束时间,那么两个时间段不重叠;否则,两个时间段重叠。
需要注意的是,这个方法只是一个简单的实现,实际应用中可能需要考虑更多的情况,比如时间段的边界是否包含在内等等。
阅读全文