From 88c959c4ed42b75f03add908e35a561fabb1e9bf Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 23 Mar 2023 22:34:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DCalendarUtil.isSameMonth?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=88=A4=E6=96=AD=E5=85=AC=E5=85=83=E5=89=8D?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E4=B8=8D=E4=B8=80=E8=87=B4=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 ++- .../cn/hutool/core/date/CalendarUtil.java | 7 ++++-- .../cn/hutool/core/date/Issue3011Test.java | 23 +++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 hutool-core/src/test/java/cn/hutool/core/date/Issue3011Test.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ae3607fa..1ac5ef3f3 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.16.M1 (2023-03-20) +# 5.8.16.M1 (2023-03-23) ### 🐣新特性 * 【core 】 改进Calculator.conversion,兼容乘法符号省略写法(issue#2964@Github) @@ -17,6 +17,7 @@ * 【core 】 修复FileMagicNumber长度判断问题导致的越界异常(issue#I6MACI@Gitee) * 【core 】 修复DateUtil针对ISO8601时间格式部分场景下的解析存在问题(issue#2981@Github) * 【core 】 修复JSONUtil.toBean可能的空指针问题(issue#2987@Github) +* 【core 】 修复CalendarUtil.isSameMonth没有判断公元前导致不一致的问题(issue#3011@Github) ------------------------------------------------------------------------------------------------------------- # 5.8.15 (2023-03-09) diff --git a/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java index 80ce668d4..4a0f6ae91 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/CalendarUtil.java @@ -395,7 +395,8 @@ public class CalendarUtil { } /** - * 比较两个日期是否为同一月 + * 比较两个日期是否为同一月
+ * 同一个月的意思是:ERA(公元)、year(年)、month(月)都一致。 * * @param cal1 日期1 * @param cal2 日期2 @@ -407,7 +408,9 @@ public class CalendarUtil { throw new IllegalArgumentException("The date must not be null"); } return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && // - cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH); + cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) && + // issue#3011@Github + cal1.get(Calendar.ERA) == cal2.get(Calendar.ERA); } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/date/Issue3011Test.java b/hutool-core/src/test/java/cn/hutool/core/date/Issue3011Test.java new file mode 100644 index 000000000..d28f81f76 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/date/Issue3011Test.java @@ -0,0 +1,23 @@ +package cn.hutool.core.date; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Calendar; + +public class Issue3011Test { + @Test + public void isSameMonthTest() { + // https://github.com/dromara/hutool/issues/3011 + // 判断是否同一个月,还需考虑公元前和公元后的的情况 + // 此处公元前2020年和公元2021年返回年都是2021 + final Calendar calendar1 = Calendar.getInstance(); + calendar1.set(-2020, Calendar.FEBRUARY, 12); + + final Calendar calendar2 = Calendar.getInstance(); + calendar2.set(2021, Calendar.FEBRUARY, 12); + + + Assert.assertFalse(DateUtil.isSameMonth(calendar1, calendar2)); + } +}