diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/date/chinese/ChineseDate.java b/hutool-core/src/main/java/org/dromara/hutool/core/date/chinese/ChineseDate.java index 0faba0a9b..32dc663a2 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/date/chinese/ChineseDate.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/date/chinese/ChineseDate.java @@ -403,6 +403,27 @@ public class ChineseDate { return String.format("%s%s年 %s%s", getCyclical(), getChineseZodiac(), getChineseMonthName(), getChineseDay()); } + @Override + public int hashCode() { + return getChineseDay().hashCode() ^ getChineseMonth().hashCode() + ^ Integer.valueOf(getChineseYear()).hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj instanceof ChineseDate) { + ChineseDate other = (ChineseDate) obj; + return day == other.day + && month == other.month + && year == other.year + && isLeapMonth == other.isLeapMonth; + } + return false; + } + // ------------------------------------------------------- private method start /** diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/date/ChineseDateTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/date/ChineseDateTest.java index df599522a..8ea3f7303 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/date/ChineseDateTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/date/ChineseDateTest.java @@ -174,4 +174,23 @@ public class ChineseDateTest { chineseDate = new ChineseDate(1998, 5, 1, false); Assertions.assertEquals("1998-05-26 00:00:00", chineseDate.getGregorianDate().toString()); } + + @Test + public void equalsTest(){ + // 二月初一 + Date date1 = new Date(2023 - 1900, 1, 20); + // 润二月初一 + Date date2 = new Date(2023 - 1900, 2, 22); + + ChineseDate chineseDate1 = new ChineseDate(date1); + ChineseDate chineseDate2 = new ChineseDate(date2); + ChineseDate chineseDate3 = new ChineseDate(date2); + + Assertions.assertEquals("2023-02-01", chineseDate1.toStringNormal()); + Assertions.assertEquals("2023-02-01", chineseDate2.toStringNormal()); + Assertions.assertEquals("2023-02-01", chineseDate3.toStringNormal()); + + Assertions.assertNotEquals(chineseDate1, chineseDate2); + Assertions.assertEquals(chineseDate2, chineseDate3); + } }