From eb9df251d589e14226559879a903d41493eb5838 Mon Sep 17 00:00:00 2001 From: Looly Date: Sun, 17 Jul 2022 00:15:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0TemporalAccessorUtil.isIn?= =?UTF-8?q?=E3=80=81LocalDateTimeUtil.isIn?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- .../cn/hutool/core/date/LocalDateTimeUtil.java | 16 ++++++++++++++++ .../core/date/TemporalAccessorUtilTest.java | 12 ++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f7d1a7a80..9d120a9c7 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ * 【http 】 优化HttpUtil.isHttp判断,避免NPE(pr#698@Gitee) * 【core 】 修复Dict#containsKey方法没区分大小写问题(pr#697@Gitee) * 【core 】 增加比较两个LocalDateTime是否为同一天(pr#693@Gitee) -* 【core 】 增加TemporalAccessorUtil.isIn(issue#I5HBL0@Gitee) +* 【core 】 增加TemporalAccessorUtil.isIn、LocalDateTimeUtil.isIn(issue#I5HBL0@Gitee) * ### 🐞Bug修复 * 【core 】 修复CollUtil里面关于可变参数传null造成的crash问题(pr#2428@Github) 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 65349133e..3bf7f6969 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 @@ -171,6 +171,8 @@ public class LocalDateTimeUtil { return ((LocalDate) temporalAccessor).atStartOfDay(); } else if(temporalAccessor instanceof Instant){ return LocalDateTime.ofInstant((Instant) temporalAccessor, ZoneId.systemDefault()); + } else if(temporalAccessor instanceof ZonedDateTime){ + return ((ZonedDateTime)temporalAccessor).toLocalDateTime(); } return LocalDateTime.of( @@ -595,4 +597,18 @@ public class LocalDateTimeUtil { public static boolean isSameDay(final LocalDate date1, final LocalDate date2) { return date1 != null && date2 != null && date1.isEqual(date2); } + + /** + * 当前日期是否在日期指定范围内
+ * 起始日期和结束日期可以互换 + * + * @param date 被检查的日期 + * @param beginDate 起始日期(包含) + * @param endDate 结束日期(包含) + * @return 是否在范围内 + * @since 5.8.5 + */ + public static boolean isIn(ChronoLocalDateTime date, ChronoLocalDateTime beginDate, ChronoLocalDateTime endDate){ + return TemporalAccessorUtil.isIn(date, beginDate, endDate); + } } diff --git a/hutool-core/src/test/java/cn/hutool/core/date/TemporalAccessorUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/TemporalAccessorUtilTest.java index 0a9f97c61..eca415c5b 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/TemporalAccessorUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/TemporalAccessorUtilTest.java @@ -31,4 +31,16 @@ public class TemporalAccessorUtilTest { LocalDate.of(2021, 6, 26), "#SSS"); Assert.assertEquals("1624636800000", today2); } + + @Test + public void isInTest(){ + final String sourceStr = "2022-04-19 00:00:00"; + final String startTimeStr = "2022-04-19 00:00:00"; + final String endTimeStr = "2022-04-19 23:59:59"; + final boolean between = TemporalAccessorUtil.isIn( + LocalDateTimeUtil.parse(sourceStr, DatePattern.NORM_DATETIME_FORMATTER), + LocalDateTimeUtil.parse(startTimeStr, DatePattern.NORM_DATETIME_FORMATTER), + LocalDateTimeUtil.parse(endTimeStr, DatePattern.NORM_DATETIME_FORMATTER)); + Assert.assertTrue(between); + } }