修复CalendarUtil.isSameMonth没有判断公元前导致不一致的问题

This commit is contained in:
Looly
2023-03-23 22:34:21 +08:00
parent 1a646df52a
commit 88c959c4ed
3 changed files with 30 additions and 3 deletions

View File

@@ -395,7 +395,8 @@ public class CalendarUtil {
}
/**
* 比较两个日期是否为同一月
* 比较两个日期是否为同一月<br>
* 同一个月的意思是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);
}
/**

View File

@@ -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));
}
}