From b979ba1b6fa9a7cd9f265d83509d9d0880213b14 Mon Sep 17 00:00:00 2001 From: CherryRum Date: Tue, 22 Mar 2022 14:38:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E4=B8=A4=E6=AE=B5=E6=97=B6=E9=97=B4=E5=8C=BA=E9=97=B4=E4=BA=A4?= =?UTF-8?q?=E9=9B=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes https://gitee.com/dromara/hutool/issues/I4YYTX --- .../main/java/cn/hutool/core/date/DateUtil.java | 3 ++- .../cn/hutool/core/date/LocalDateTimeUtil.java | 2 +- .../java/cn/hutool/core/date/DateUtilTest.java | 16 +++++++++++++--- .../hutool/core/date/LocalDateTimeUtilTest.java | 16 +++++++++++++--- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java index 6df40341a..4798c8162 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java @@ -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 diff --git a/hutool-core/src/main/java/cn/hutool/core/date/LocalDateTimeUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/LocalDateTimeUtil.java index 7ca61929a..2bf8462c9 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/LocalDateTimeUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/LocalDateTimeUtil.java @@ -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); } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java index 7f7fcd81e..4f8038672 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java @@ -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)); + } } diff --git a/hutool-core/src/test/java/cn/hutool/core/date/LocalDateTimeUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/LocalDateTimeUtilTest.java index 1d9df253e..08a89b122 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/LocalDateTimeUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/LocalDateTimeUtilTest.java @@ -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