diff --git a/CHANGELOG.md b/CHANGELOG.md index a85d574d2..4f8f829de 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### 🐣新特性 ### 🐞Bug修复 * 【crypto 】 修复JWTSignerUtil.createSigner中algorithmId未转换问题(issue#3806@Github) +* 【core 】 修复DateUtil.rangeContains未重置问题(issue#IB8OFS@gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.34(2024-11-25) 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 53b44ad17..ab92c8519 100755 --- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java @@ -1975,8 +1975,8 @@ public class DateUtil extends CalendarUtil { * @since 5.7.21 */ public static List rangeContains(DateRange start, DateRange end) { - List startDateTimes = CollUtil.newArrayList((Iterable) start); - List endDateTimes = CollUtil.newArrayList((Iterable) end); + List startDateTimes = CollUtil.newArrayList((Iterable) start.reset()); + List endDateTimes = CollUtil.newArrayList((Iterable) end.reset()); return startDateTimes.stream().filter(endDateTimes::contains).collect(Collectors.toList()); } @@ -1990,8 +1990,8 @@ public class DateUtil extends CalendarUtil { * @since 5.7.21 */ public static List rangeNotContains(DateRange start, DateRange end) { - List startDateTimes = CollUtil.newArrayList((Iterable) start); - List endDateTimes = CollUtil.newArrayList((Iterable) end); + List startDateTimes = CollUtil.newArrayList((Iterable) start.reset()); + List endDateTimes = CollUtil.newArrayList((Iterable) end.reset()); return endDateTimes.stream().filter(item -> !startDateTimes.contains(item)).collect(Collectors.toList()); } diff --git a/hutool-core/src/test/java/cn/hutool/core/date/IssueIB8OFSTest.java b/hutool-core/src/test/java/cn/hutool/core/date/IssueIB8OFSTest.java new file mode 100644 index 000000000..1d6921523 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/date/IssueIB8OFSTest.java @@ -0,0 +1,25 @@ +package cn.hutool.core.date; + +import cn.hutool.core.lang.Console; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.List; + +public class IssueIB8OFSTest { + @Test + void rangeTest() { + DateRange startRange = DateUtil.range( + DateUtil.parse("2017-01-01"), + DateUtil.parse("2017-01-31"), DateField.DAY_OF_YEAR); + DateRange endRange = DateUtil.range( + DateUtil.parse("2017-01-31"), + DateUtil.parse("2017-02-02"), DateField.DAY_OF_YEAR); + + List dateTimes = DateUtil.rangeContains(startRange, endRange); + Assertions.assertEquals(1, dateTimes.size()); + + List dateNotTimes = DateUtil.rangeNotContains(startRange, endRange); + Assertions.assertEquals(2, dateNotTimes.size()); + } +}