diff --git a/hutool-core/src/main/java/cn/hutool/core/date/Zodiac.java b/hutool-core/src/main/java/cn/hutool/core/date/Zodiac.java index 83c08083a..fdaa7c794 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/Zodiac.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/Zodiac.java @@ -12,6 +12,8 @@ package cn.hutool.core.date; +import cn.hutool.core.lang.Assert; + import java.util.Calendar; import java.util.Date; @@ -72,6 +74,10 @@ public class Zodiac { * @return 星座名 */ public static String getZodiac(final int month, final int day) { + Assert.checkBetween(month, + Month.JANUARY.getValue(), + Month.DECEMBER.getValue(), + "Unsupported month value, must be [0,12]"); // 在分隔日前为前一个星座,否则为后一个星座 return day < DAY_ARR[month] ? ZODIACS[month] : ZODIACS[month + 1]; } diff --git a/hutool-core/src/test/java/cn/hutool/core/date/ZodiacTest.java b/hutool-core/src/test/java/cn/hutool/core/date/ZodiacTest.java index 7b31b0924..797857a8e 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/ZodiacTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/ZodiacTest.java @@ -31,4 +31,12 @@ public class ZodiacTest { Assertions.assertNull(Zodiac.getChineseZodiac(1899)); Assertions.assertNull(Zodiac.getChineseZodiac((Calendar) null)); } + + @Test + public void getZodiacOutOfRangeTest() { + // https://github.com/dromara/hutool/issues/3036 + Assertions.assertThrows(IllegalArgumentException.class, ()->{ + DateUtil.getZodiac(Month.UNDECIMBER.getValue(), 10); + }); + } }