diff --git a/CHANGELOG.md b/CHANGELOG.md index b6cec921d..3128b86bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ * 【core 】 新增copySafely方法与mkdirsSafely方法(pr#527@Gitee) * 【core 】 新增MetroHash(pr#532@Gitee) * 【core 】 SpringUtil增加publishEvent重载(pr#2139@Github) +* 【core 】 DateUtil增加rangeContains、rangeNotContains(pr#537@Gitee) ### 🐞Bug修复 * 【core 】 修复ChineseDate农历获取正月出现数组越界BUG(issue#2112@Github) 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 b36a12cb5..90412c96f 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 @@ -1887,6 +1887,8 @@ public class DateUtil extends CalendarUtil { * @param start 开始区间 * @param end 结束区间 * @return true 包含 + * @author handy + * @since 5.7.21 */ public static List rangeContains(DateRange start, DateRange end) { List startDateTimes = CollUtil.newArrayList((Iterable) start); @@ -1900,6 +1902,8 @@ public class DateUtil extends CalendarUtil { * @param start 开始区间 * @param end 结束区间 * @return true 包含 + * @author handy + * @since 5.7.21 */ public static List rangeNotContains(DateRange start, DateRange end) { List startDateTimes = CollUtil.newArrayList((Iterable) start); diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/RangeTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/RangeTest.java index c7ba874f3..b10b115eb 100644 --- a/hutool-core/src/test/java/cn/hutool/core/lang/RangeTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/lang/RangeTest.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateRange; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; import org.junit.Assert; import org.junit.Test; @@ -58,8 +59,8 @@ public class RangeTest { Assert.assertEquals(sb.toString(), "1#2#3#"); StringBuilder sb2 = new StringBuilder(); - DateUtil.rangeConsume(null, null, DateField.DAY_OF_YEAR, a -> sb.append(DateTime.of(a).dayOfMonth()).append("#")); - Assert.assertEquals(sb2.toString(), ""); + DateUtil.rangeConsume(null, null, DateField.DAY_OF_YEAR, a -> sb2.append(DateTime.of(a).dayOfMonth()).append("#")); + Assert.assertEquals(sb2.toString(), StrUtil.EMPTY); } @Test @@ -149,7 +150,8 @@ public class RangeTest { DateRange endRange = DateUtil.range(start1, end1, DateField.DAY_OF_YEAR); // 交集 List dateTimes = DateUtil.rangeContains(startRange, endRange); - dateTimes.parallelStream().forEach(System.out::println); + Assert.assertEquals(1, dateTimes.size()); + Assert.assertEquals(DateUtil.parse("2017-01-31"), dateTimes.get(0)); } @Test @@ -164,7 +166,9 @@ public class RangeTest { DateRange endRange = DateUtil.range(start1, end1, DateField.DAY_OF_YEAR); // 差集 List dateTimes1 = DateUtil.rangeNotContains(startRange, endRange); - dateTimes1.parallelStream().forEach(System.out::println); + + Assert.assertEquals(1, dateTimes1.size()); + Assert.assertEquals(DateUtil.parse("2017-01-31"), dateTimes1.get(0)); } }