From 03b0c0aaf140d8b0536aaf3bf3c75c2652622e62 Mon Sep 17 00:00:00 2001 From: 6tail <6tail@6tail.cn> Date: Tue, 21 Oct 2025 09:09:01 +0800 Subject: [PATCH] =?UTF-8?q?v1.7.6=20=E4=BF=AE=E5=A4=8D=E5=80=99=E7=9A=84?= =?UTF-8?q?=E9=94=99=E5=88=AB=E5=AD=97=EF=BC=9B=E4=BF=AE=E5=A4=8D=E5=90=89?= =?UTF-8?q?=E7=A5=9E=E5=AE=9C=E9=A9=B1=E3=80=81=E5=87=B6=E7=A5=9E=E5=AE=9C?= =?UTF-8?q?=E5=BF=8C=E7=9A=84=E9=94=99=E8=AF=AF=EF=BC=9B=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=86=9C=E5=8E=86=E9=97=B0=E6=9C=88=E5=8F=8A=E5=90=8E=E7=BB=AD?= =?UTF-8?q?=E6=9C=88=E4=BB=BD=E7=9A=84=E5=B9=B2=E6=94=AF=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 ++++++- README.md | 2 +- README_EN.md | 2 +- pom.xml | 2 +- src/main/java/com/nlf/calendar/LunarMonth.java | 4 ++-- src/main/java/com/nlf/calendar/util/LunarUtil.java | 6 +++--- src/test/java/test/LunarMonthTest.java | 8 ++++---- src/test/java/test/LunarTest.java | 8 ++++++++ 8 files changed, 26 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ccd036e..68aa4cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,7 +40,12 @@ ## [1.7.4] - 2025-04-29 1. 修复身宫报错的问题。 -## [1.7.5] - 2025-09-17 +## [1.7.5] - 2025-10-01 1. 修复:极端情况下八字转公历时刻出现遗漏的问题。 2. 优化:更新△T参数。 3. 优化:吉神宜驱、凶神宜忌。 + +## [1.7.6] - 2025-10-21 +1. 修复:候的错别字。 +2. 修复:吉神宜驱、凶神宜忌的错误。 +3. 修复:农历闰月及后续月份的干支错误。 diff --git a/README.md b/README.md index 153d8e1..c0b3121 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历) cn.6tail lunar - 1.7.5 + 1.7.6 ``` diff --git a/README_EN.md b/README_EN.md index 4e3864e..2cb112f 100644 --- a/README_EN.md +++ b/README_EN.md @@ -12,7 +12,7 @@ lunar is a calendar library for Solar and Chinese Lunar. cn.6tail lunar - 1.7.5 + 1.7.6 ``` diff --git a/pom.xml b/pom.xml index 8525055..246e85b 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ cn.6tail lunar jar - 1.7.5 + 1.7.6 ${project.groupId}:${project.artifactId} https://github.com/6tail/lunar-java a calendar library for Solar and Chinese Lunar diff --git a/src/main/java/com/nlf/calendar/LunarMonth.java b/src/main/java/com/nlf/calendar/LunarMonth.java index 01a9755..f57e5b1 100644 --- a/src/main/java/com/nlf/calendar/LunarMonth.java +++ b/src/main/java/com/nlf/calendar/LunarMonth.java @@ -49,7 +49,7 @@ public class LunarMonth { this.dayCount = dayCount; this.firstJulianDay = firstJulianDay; this.index = index; - this.zhiIndex = (index - 1 + LunarUtil.BASE_MONTH_ZHI_INDEX) % 12; + this.zhiIndex = (Math.abs(lunarMonth) - 1 + LunarUtil.BASE_MONTH_ZHI_INDEX) % 12; } /** @@ -109,7 +109,7 @@ public class LunarMonth { public int getGanIndex() { int offset = (LunarYear.fromYear(year).getGanIndex() + 1) % 5 * 2; - return (index - 1 + offset) % 10; + return (Math.abs(month) - 1 + offset) % 10; } public String getGan() { diff --git a/src/main/java/com/nlf/calendar/util/LunarUtil.java b/src/main/java/com/nlf/calendar/util/LunarUtil.java index c0dcf5b..34ec518 100644 --- a/src/main/java/com/nlf/calendar/util/LunarUtil.java +++ b/src/main/java/com/nlf/calendar/util/LunarUtil.java @@ -22,7 +22,7 @@ public class LunarUtil{ /** 候 */ public static final String[] HOU = {"初候", "二候", "三候"}; /** 物候 */ - public static final String[] WU_HOU = {"蚯蚓结","麋角解","水泉动","雁北乡","鹊始巢","雉始雊","鸡始乳","征鸟厉疾","水泽腹坚","东风解冻","蛰虫始振","鱼陟负冰","獭祭鱼","候雁北","草木萌动","桃始华","仓庚鸣","鹰化为鸠","玄鸟至","雷乃发声","始电","桐始华","田鼠化为鴽","虹始见","萍始生","鸣鸠拂奇羽","戴胜降于桑","蝼蝈鸣","蚯蚓出","王瓜生","苦菜秀","靡草死","麦秋至","螳螂生","鵙始鸣","反舌无声","鹿角解","蜩始鸣","半夏生","温风至","蟋蟀居壁","鹰始挚","腐草为萤","土润溽暑","大雨行时","凉风至","白露降","寒蝉鸣","鹰乃祭鸟","天地始肃","禾乃登","鸿雁来","玄鸟归","群鸟养羞","雷始收声","蛰虫坯户","水始涸","鸿雁来宾","雀入大水为蛤","菊有黄花","豺乃祭兽","草木黄落","蛰虫咸俯","水始冰","地始冻","雉入大水为蜃","虹藏不见","天气上升地气下降","闭塞而成冬","鹖鴠不鸣","虎始交","荔挺出"}; + public static final String[] WU_HOU = {"蚯蚓结","麋角解","水泉动","雁北乡","鹊始巢","雉始雊","鸡始乳","征鸟厉疾","水泽腹坚","东风解冻","蛰虫始振","鱼陟负冰","獭祭鱼","候雁北","草木萌动","桃始华","仓庚鸣","鹰化为鸠","玄鸟至","雷乃发声","始电","桐始华","田鼠化为鴽","虹始见","萍始生","鸣鸠拂其羽","戴胜降于桑","蝼蝈鸣","蚯蚓出","王瓜生","苦菜秀","靡草死","麦秋至","螳螂生","鵙始鸣","反舌无声","鹿角解","蜩始鸣","半夏生","温风至","蟋蟀居壁","鹰始挚","腐草为萤","土润溽暑","大雨行时","凉风至","白露降","寒蝉鸣","鹰乃祭鸟","天地始肃","禾乃登","鸿雁来","玄鸟归","群鸟养羞","雷始收声","蛰虫坯户","水始涸","鸿雁来宾","雀入大水为蛤","菊有黄花","豺乃祭兽","草木黄落","蛰虫咸俯","水始冰","地始冻","雉入大水为蜃","虹藏不见","天气上升地气下降","闭塞而成冬","鹖鴠不鸣","虎始交","荔挺出"}; /** 天干 */ public static final String[] GAN = {"","甲","乙","丙","丁","戊","己","庚","辛","壬","癸"}; /** 喜神方位,《喜神方位歌》:甲己在艮乙庚乾,丙辛坤位喜神安。丁壬只在离宫坐,戊癸原在在巽间。 */ @@ -893,7 +893,7 @@ public class LunarUtil{ List l = new ArrayList(); int m = monthZhiIndex - 2; if (m < 0) { - m += 10; + m += 12; } Matcher matcher = Pattern.compile(String.format(";%02X(.[^;]*)", getJiaZiIndex(dayGanZhi))).matcher(DAY_SHEN_SHA[m]); if (matcher.find()) { @@ -921,7 +921,7 @@ public class LunarUtil{ List l = new ArrayList(); int m = monthZhiIndex - 2; if (m < 0) { - m += 10; + m += 12; } Matcher matcher = Pattern.compile(String.format(";%02X(.[^;]*)", getJiaZiIndex(dayGanZhi))).matcher(DAY_SHEN_SHA[m]); if (matcher.find()) { diff --git a/src/test/java/test/LunarMonthTest.java b/src/test/java/test/LunarMonthTest.java index 3a17d5a..e24f173 100644 --- a/src/test/java/test/LunarMonthTest.java +++ b/src/test/java/test/LunarMonthTest.java @@ -22,14 +22,14 @@ public class LunarMonthTest { public void test1(){ LunarMonth month = LunarMonth.fromYm(2023, -2); Assert.assertEquals(3, month.getIndex()); - Assert.assertEquals("丙辰", month.getGanZhi()); + Assert.assertEquals("乙卯", month.getGanZhi()); } @Test public void test2(){ LunarMonth month = LunarMonth.fromYm(2023, 3); Assert.assertEquals(4, month.getIndex()); - Assert.assertEquals("丁巳", month.getGanZhi()); + Assert.assertEquals("丙辰", month.getGanZhi()); } @Test @@ -43,7 +43,7 @@ public class LunarMonthTest { public void test4(){ LunarMonth month = LunarMonth.fromYm(2023, 12); Assert.assertEquals(13, month.getIndex()); - Assert.assertEquals("丙寅", month.getGanZhi()); + Assert.assertEquals("乙丑", month.getGanZhi()); } @Test @@ -56,7 +56,7 @@ public class LunarMonthTest { @Test public void test6(){ LunarMonth month = LunarMonth.fromYm(2023, 9); - Assert.assertEquals("癸亥", month.getGanZhi()); + Assert.assertEquals("壬戌", month.getGanZhi()); } } diff --git a/src/test/java/test/LunarTest.java b/src/test/java/test/LunarTest.java index d8678fe..6dc0407 100644 --- a/src/test/java/test/LunarTest.java +++ b/src/test/java/test/LunarTest.java @@ -685,4 +685,12 @@ public class LunarTest { Assert.assertEquals("[时德, 阳德, 民日, 玉宇, 司命]", lunar.getDayJiShen().toString()); Assert.assertEquals("[河魁, 死神, 天吏, 致死, 往亡]", lunar.getDayXiongSha().toString()); } + + @Test + public void test101() { + Solar solar = new Solar(2025, 12, 15); + Lunar lunar = solar.getLunar(); + Assert.assertEquals("[阳德, 六仪, 续世, 解神, 司命]", lunar.getDayJiShen().toString()); + Assert.assertEquals("[月破, 大耗, 灾煞, 天火, 厌对, 招摇, 五虚, 血忌]", lunar.getDayXiongSha().toString()); + } }