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

Merge pull request !552 from 阿超/v5-dev
This commit is contained in:
Looly 2022-02-28 10:17:12 +00:00 committed by Gitee
commit c1f9ef1ff5
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 36 additions and 0 deletions

View File

@ -2183,6 +2183,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

@ -1027,4 +1027,24 @@ public class DateUtilTest {
final DateTime dateTime = DateUtil.parse("12:23:34");
Console.log(dateTime);
}
@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));
}
}