参考增加对时间段重合的判断方法,拓展Date以及DateTime类型

This commit is contained in:
VampireAchao 2022-02-27 22:26:45 +08:00
parent b5dfc8b639
commit dcc52413a7
2 changed files with 36 additions and 0 deletions

View File

@ -2161,6 +2161,22 @@ public class DateUtil extends CalendarUtil {
}
}
/**
* 检查两个时间段是否有时间重叠<br>
* 重叠指两个时间段是否有交集
*
* @param realStartTime 第一个时间段的开始时间
* @param realEndTime 第一个时间段的结束时间
* @param startTime 第二个时间段的开始时间
* @param endTime 第二个时间段的结束时间
* @return true 表示时间有重合
* @since 5.7.20
*/
public static boolean isOverlap(Date realStartTime, Date realEndTime,
Date startTime, Date endTime) {
return startTime.after(realEndTime) || endTime.before(realStartTime);
}
// ------------------------------------------------------------------------ Private method start
/**

View File

@ -1020,4 +1020,24 @@ public class DateUtilTest {
final boolean isSameWeek2 = DateUtil.isSameWeek(DateTime.of("2021-12-29", "yyyy-MM-dd"), DateTime.of("2022-01-01", "yyyy-MM-dd"), true);
Assert.assertTrue(isSameWeek2);
}
@Test
public void isOverlapTest() {
DateTime oneStartTime = DateTime.of("2022-01-01 10:10:10", DatePattern.NORM_DATETIME_PATTERN);
DateTime oneEndTime = DateTime.of("2022-01-01 11:10:10", DatePattern.NORM_DATETIME_PATTERN);
DateTime oneStartTime2 = DateTime.of("2022-01-01 11:20:10", DatePattern.NORM_DATETIME_PATTERN);
DateTime oneEndTime2 = DateTime.of("2022-01-01 11:30:10", DatePattern.NORM_DATETIME_PATTERN);
DateTime oneStartTime3 = DateTime.of("2022-01-01 11:40:10", DatePattern.NORM_DATETIME_PATTERN);
DateTime oneEndTime3 = DateTime.of("2022-01-01 11:50:10", DatePattern.NORM_DATETIME_PATTERN);
//真实请假数据
DateTime realStartTime = DateTime.of("2022-01-01 11:49:10", DatePattern.NORM_DATETIME_PATTERN);
DateTime realEndTime = DateTime.of("2022-01-01 12:00:10", DatePattern.NORM_DATETIME_PATTERN);
Assert.assertTrue(DateUtil.isOverlap(oneStartTime, oneEndTime, realStartTime, realEndTime));
Assert.assertTrue(DateUtil.isOverlap(oneStartTime2, oneEndTime2, realStartTime, realEndTime));
Assert.assertFalse(DateUtil.isOverlap(oneStartTime3, oneEndTime3, realStartTime, realEndTime));
}
}