Merge pull request #2210 from CherryRum/v5-dev

修复判断两段时间区间交集问题
This commit is contained in:
Golden Looly 2022-03-22 19:00:40 +08:00 committed by GitHub
commit 538200bdc3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 29 additions and 8 deletions

View File

@ -2196,7 +2196,8 @@ public class DateUtil extends CalendarUtil {
*/
public static boolean isOverlap(Date realStartTime, Date realEndTime,
Date startTime, Date endTime) {
return startTime.after(realEndTime) || endTime.before(realStartTime);
return startTime.before(realEndTime) && endTime.after(realStartTime);
}
// ------------------------------------------------------------------------ Private method start

View File

@ -564,7 +564,7 @@ public class LocalDateTimeUtil {
*/
public static boolean isOverlap(ChronoLocalDateTime<?> realStartTime, ChronoLocalDateTime<?> realEndTime,
ChronoLocalDateTime<?> startTime, ChronoLocalDateTime<?> endTime) {
return startTime.isAfter(realEndTime) || endTime.isBefore(realStartTime);
return startTime.isBefore(realEndTime) && endTime.isAfter(realStartTime);
}
/**

View File

@ -1043,8 +1043,18 @@ public class DateUtilTest {
DateTime realStartTime = DateUtil.parse("2022-01-01 11:49:10");
DateTime realEndTime = DateUtil.parse("2022-01-01 12:00:10");
Assert.assertTrue(DateUtil.isOverlap(oneStartTime, oneEndTime, realStartTime, realEndTime));
Assert.assertTrue(DateUtil.isOverlap(oneStartTime2, oneEndTime2, realStartTime, realEndTime));
Assert.assertFalse(DateUtil.isOverlap(oneStartTime3, oneEndTime3, realStartTime, realEndTime));
DateTime realStartTime1 = DateUtil.parse("2022-03-01 08:00:00");
DateTime realEndTime1 = DateUtil.parse("2022-03-01 10:00:00");
DateTime startTime = DateUtil.parse("2022-03-23 05:00:00");
DateTime endTime = DateUtil.parse("2022-03-23 13:00:00");
Assert.assertFalse(DateUtil.isOverlap(oneStartTime, oneEndTime, realStartTime, realEndTime));
Assert.assertFalse(DateUtil.isOverlap(oneStartTime2, oneEndTime2, realStartTime, realEndTime));
Assert.assertTrue(DateUtil.isOverlap(oneStartTime3, oneEndTime3, realStartTime, realEndTime));
Assert.assertFalse(DateUtil.isOverlap(realStartTime1,realEndTime1,startTime,endTime));
Assert.assertFalse(DateUtil.isOverlap(startTime,endTime,realStartTime1,realEndTime1));
}
}

View File

@ -11,6 +11,7 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAccessor;
import java.util.Date;
public class LocalDateTimeUtilTest {
@ -196,9 +197,18 @@ public class LocalDateTimeUtilTest {
LocalDateTime realStartTime = LocalDateTime.of(2022, 1, 1, 11, 49, 10);
LocalDateTime realEndTime = LocalDateTime.of(2022, 1, 1, 12, 0, 10);
Assert.assertTrue(LocalDateTimeUtil.isOverlap(oneStartTime,oneEndTime,realStartTime,realEndTime));
Assert.assertTrue(LocalDateTimeUtil.isOverlap(oneStartTime2,oneEndTime2,realStartTime,realEndTime));
Assert.assertFalse(LocalDateTimeUtil.isOverlap(oneStartTime3,oneEndTime3,realStartTime,realEndTime));
LocalDateTime realStartTime1 = DateUtil.parseLocalDateTime("2022-03-01 08:00:00");
LocalDateTime realEndTime1 = DateUtil.parseLocalDateTime("2022-03-01 10:00:00");
LocalDateTime startTime = DateUtil.parseLocalDateTime("2022-03-23 05:00:00");
LocalDateTime endTime = DateUtil.parseLocalDateTime("2022-03-23 13:00:00");
Assert.assertFalse(LocalDateTimeUtil.isOverlap(oneStartTime,oneEndTime,realStartTime,realEndTime));
Assert.assertFalse(LocalDateTimeUtil.isOverlap(oneStartTime2,oneEndTime2,realStartTime,realEndTime));
Assert.assertTrue(LocalDateTimeUtil.isOverlap(oneStartTime3,oneEndTime3,realStartTime,realEndTime));
Assert.assertFalse(LocalDateTimeUtil.isOverlap(realStartTime1,realEndTime1,startTime,endTime));
Assert.assertFalse(LocalDateTimeUtil.isOverlap(startTime,endTime,realStartTime1,realEndTime1));
}
@Test