From b906cad4081fb902d76d654967354e5be4643c2f Mon Sep 17 00:00:00 2001 From: fengbaoheng Date: Sun, 4 Sep 2022 00:20:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E6=97=B6=E9=97=B4=E6=AF=94?= =?UTF-8?q?=E8=BE=83=E6=96=B9=E6=B3=95=E7=9A=84=E5=85=A5=E5=8F=82=E5=90=88?= =?UTF-8?q?=E6=B3=95=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/date/LocalDateTimeUtil.java | 12 ++++++++++-- .../cn/hutool/core/date/LocalDateTimeUtilTest.java | 6 ++++++ 2 files changed, 16 insertions(+), 2 deletions(-) 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 65ad93c55..62fe2c0ce 100755 --- a/hutool-core/src/main/java/cn/hutool/core/date/LocalDateTimeUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/LocalDateTimeUtil.java @@ -462,8 +462,8 @@ public class LocalDateTimeUtil { * 则本方法会判断 time ∈ (start, end] 是否成立 * * @param time 被比较的时间 - * @param start 开始时间, 应小于等于结束时间 - * @param end 结束时间,应大于等于开始时间 + * @param start 开始时间, 应小于等于结束时间 + * @param end 结束时间,应大于等于开始时间 * @param isIncludeStart 时间范围是否包含开始时间 * @param isIncludeEnd 时间范围是否包含结束时间 * @return true-在范围内,false-不在范围内 @@ -472,6 +472,14 @@ public class LocalDateTimeUtil { */ public static boolean isBetween(LocalDateTime time, LocalDateTime start, LocalDateTime end, boolean isIncludeStart, boolean isIncludeEnd) { + if (time == null || start == null || end == null) { + throw new IllegalArgumentException("时间参数不可为null"); + } + + if(end.isBefore(start)){ + throw new IllegalArgumentException("结束时间应大于等于开始时间"); + } + // 先判断是否满足 time ∈ (start, end) boolean isBetween = time.isAfter(start) && time.isBefore(end); 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 4e8226b14..9fae2203e 100755 --- a/hutool-core/src/test/java/cn/hutool/core/date/LocalDateTimeUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/LocalDateTimeUtilTest.java @@ -164,6 +164,12 @@ public class LocalDateTimeUtilTest { Assert.assertFalse(LocalDateTimeUtil.isBetween(start, start, end, false, false)); Assert.assertTrue(LocalDateTimeUtil.isBetween(end, start, end, false, true)); Assert.assertFalse(LocalDateTimeUtil.isBetween(end, start, end, false, false)); + + // 异常入参 + Assert.assertThrows(IllegalArgumentException.class, ()->LocalDateTimeUtil.isBetween(null, start, end, false, false)); + Assert.assertThrows(IllegalArgumentException.class, ()->LocalDateTimeUtil.isBetween(start, null, end, false, false)); + Assert.assertThrows(IllegalArgumentException.class, ()->LocalDateTimeUtil.isBetween(start, start, null, false, false)); + Assert.assertThrows(IllegalArgumentException.class, ()->LocalDateTimeUtil.isBetween(start, end, start, false, false)); } @Test