diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0e18cef..f61fcf0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -32,3 +32,7 @@
## [1.7.2] - 2025-03-05
1. 修复每日宜忌错误。
2. 更新2018之后的△T参数。
+
+## [1.7.3] - 2025-04-07
+1. 修复个别日太岁方位的错误。
+2. 修复八字身宫计算错误的问题。
diff --git a/README.md b/README.md
index 7dae443..cd0f7af 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)
cn.6tail
lunar
- 1.7.2
+ 1.7.3
```
diff --git a/README_EN.md b/README_EN.md
index 7a39371..78a792e 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.2
+ 1.7.3
```
diff --git a/pom.xml b/pom.xml
index d491112..e3541e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
cn.6tail
lunar
jar
- 1.7.2
+ 1.7.3
${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/EightChar.java b/src/main/java/com/nlf/calendar/EightChar.java
index 9422eb6..ca464c0 100644
--- a/src/main/java/com/nlf/calendar/EightChar.java
+++ b/src/main/java/com/nlf/calendar/EightChar.java
@@ -527,15 +527,12 @@ public class EightChar {
public String getShenGong() {
int monthZhiIndex = LunarUtil.find(getMonthZhi(), MONTH_ZHI, 0);
int timeZhiIndex = LunarUtil.find(getTimeZhi(), LunarUtil.ZHI, 0);
- int offset = monthZhiIndex + timeZhiIndex;
- while (offset > 12) {
- offset -= 12;
- }
- int ganIndex = (lunar.getYearGanIndexExact() + 1) * 2 + (offset % 12);
+ int offset = (monthZhiIndex + timeZhiIndex - 1) % 12;
+ int ganIndex = (lunar.getYearGanIndexExact() + 1) * 2 + offset;
while (ganIndex > 10) {
ganIndex -= 10;
}
- return LunarUtil.GAN[ganIndex] + MONTH_ZHI[offset];
+ return LunarUtil.GAN[ganIndex + 1] + MONTH_ZHI[offset + 1];
}
/**
diff --git a/src/main/java/com/nlf/calendar/Lunar.java b/src/main/java/com/nlf/calendar/Lunar.java
index d573543..40bc092 100644
--- a/src/main/java/com/nlf/calendar/Lunar.java
+++ b/src/main/java/com/nlf/calendar/Lunar.java
@@ -1347,11 +1347,11 @@ public class Lunar {
protected String getDayPositionTaiSui(String dayInGanZhi, int yearZhiIndex) {
String p;
- if ("甲子,乙丑,丙寅,丁卯,戊辰,已巳".contains(dayInGanZhi)) {
+ if ("甲子,乙丑,丙寅,丁卯,戊辰,己巳".contains(dayInGanZhi)) {
p = "震";
- } else if ("丙子,丁丑,戊寅,已卯,庚辰,辛巳".contains(dayInGanZhi)) {
+ } else if ("丙子,丁丑,戊寅,己卯,庚辰,辛巳".contains(dayInGanZhi)) {
p = "离";
- } else if ("戊子,已丑,庚寅,辛卯,壬辰,癸巳".contains(dayInGanZhi)) {
+ } else if ("戊子,己丑,庚寅,辛卯,壬辰,癸巳".contains(dayInGanZhi)) {
p = "中";
} else if ("庚子,辛丑,壬寅,癸卯,甲辰,乙巳".contains(dayInGanZhi)) {
p = "兑";
diff --git a/src/test/java/test/BaZiTest.java b/src/test/java/test/BaZiTest.java
index 52a6001..a1cd58b 100644
--- a/src/test/java/test/BaZiTest.java
+++ b/src/test/java/test/BaZiTest.java
@@ -235,7 +235,7 @@ public class BaZiTest {
@Test
public void testShenGong1() {
Lunar lunar = new Solar(1994, 12, 6, 2, 0, 0).getLunar();
- Assert.assertEquals("身宫", "乙丑", lunar.getEightChar().getShenGong());
+ Assert.assertEquals("身宫", "丁丑", lunar.getEightChar().getShenGong());
}
@Test
@@ -413,7 +413,7 @@ public class BaZiTest {
Solar solar = new Solar(1986, 5, 29, 13, 37, 0);
Lunar lunar = solar.getLunar();
EightChar eightChar = lunar.getEightChar();
- Assert.assertEquals("己丑", eightChar.getShenGong());
+ Assert.assertEquals("辛丑", eightChar.getShenGong());
}
@Test
@@ -543,4 +543,10 @@ public class BaZiTest {
Assert.assertEquals(expected, actual);
}
+ @Test
+ public void test32() {
+ Lunar lunar = Solar.fromYmdHms(1980, 6, 15, 12, 30, 30).getLunar();
+ EightChar eightChar = lunar.getEightChar();
+ Assert.assertEquals("身宫", "己丑", eightChar.getShenGong());
+ }
}