diff --git a/README.md b/README.md
index 796162c..cd93a35 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)
cn.6tail
lunar
- 1.2.22
+ 1.2.23
```
diff --git a/README_EN.md b/README_EN.md
index b8e72b8..ef611bf 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.2.22
+ 1.2.23
```
diff --git a/pom.xml b/pom.xml
index 55bd715..d722b96 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
cn.6tail
lunar
jar
- 1.2.22
+ 1.2.23
${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 a02d92d..cf2a491 100644
--- a/src/main/java/com/nlf/calendar/EightChar.java
+++ b/src/main/java/com/nlf/calendar/EightChar.java
@@ -474,6 +474,26 @@ public class EightChar {
return LunarUtil.NAYIN.get(getTaiYuan());
}
+ /**
+ * 获取胎息
+ *
+ * @return 胎息
+ */
+ public String getTaiXi() {
+ int ganIndex = (2 == sect) ? lunar.getDayGanIndexExact2() : lunar.getDayGanIndexExact();
+ int zhiIndex = (2 == sect) ? lunar.getDayZhiIndexExact2() : lunar.getDayZhiIndexExact();
+ return LunarUtil.HE_GAN_5[ganIndex] + LunarUtil.HE_ZHI_6[zhiIndex];
+ }
+
+ /**
+ * 获取胎息纳音
+ *
+ * @return 纳音
+ */
+ public String getTaiXiNaYin() {
+ return LunarUtil.NAYIN.get(getTaiXi());
+ }
+
/**
* 获取命宫
*
@@ -531,7 +551,10 @@ public class EightChar {
timeZhiIndex = i;
}
}
- int zhiIndex = (2 + (monthZhiIndex + timeZhiIndex)) % 12;
+ int zhiIndex = 2 + monthZhiIndex + timeZhiIndex;
+ if (zhiIndex > 12) {
+ zhiIndex -= 12;
+ }
int jiaZiIndex = LunarUtil.getJiaZiIndex(lunar.getMonthInGanZhiExact()) - (monthZhiIndex - zhiIndex);
if (jiaZiIndex >= 60) {
jiaZiIndex -= 60;
diff --git a/src/main/java/com/nlf/calendar/Lunar.java b/src/main/java/com/nlf/calendar/Lunar.java
index 5c64c0a..ce84e5e 100644
--- a/src/main/java/com/nlf/calendar/Lunar.java
+++ b/src/main/java/com/nlf/calendar/Lunar.java
@@ -1904,7 +1904,7 @@ public class Lunar {
* @return 日冲,如申
*/
public String getDayChong() {
- return LunarUtil.CHONG[dayZhiIndex + 1];
+ return LunarUtil.CHONG[dayZhiIndex];
}
/**
@@ -1946,7 +1946,7 @@ public class Lunar {
* @return 无情之克的日冲天干,如甲
*/
public String getDayChongGan() {
- return LunarUtil.CHONG_GAN[dayGanIndex + 1];
+ return LunarUtil.CHONG_GAN[dayGanIndex];
}
/**
@@ -1955,7 +1955,7 @@ public class Lunar {
* @return 有情之克的日冲天干,如甲
*/
public String getDayChongGanTie() {
- return LunarUtil.CHONG_GAN_TIE[dayGanIndex + 1];
+ return LunarUtil.CHONG_GAN_TIE[dayGanIndex];
}
/**
@@ -1964,7 +1964,7 @@ public class Lunar {
* @return 时冲,如申
*/
public String getTimeChong() {
- return LunarUtil.CHONG[timeZhiIndex + 1];
+ return LunarUtil.CHONG[timeZhiIndex];
}
/**
@@ -2006,7 +2006,7 @@ public class Lunar {
* @return 无情之克的时冲天干,如甲
*/
public String getTimeChongGan() {
- return LunarUtil.CHONG_GAN[timeGanIndex + 1];
+ return LunarUtil.CHONG_GAN[timeGanIndex];
}
/**
@@ -2015,7 +2015,7 @@ public class Lunar {
* @return 有情之克的时冲天干,如甲
*/
public String getTimeChongGanTie() {
- return LunarUtil.CHONG_GAN_TIE[timeGanIndex + 1];
+ return LunarUtil.CHONG_GAN_TIE[timeGanIndex];
}
/**
diff --git a/src/main/java/com/nlf/calendar/LunarTime.java b/src/main/java/com/nlf/calendar/LunarTime.java
index e6234ec..a8f3339 100644
--- a/src/main/java/com/nlf/calendar/LunarTime.java
+++ b/src/main/java/com/nlf/calendar/LunarTime.java
@@ -235,7 +235,7 @@ public class LunarTime {
* @return 时冲,如申
*/
public String getChong() {
- return LunarUtil.CHONG[zhiIndex + 1];
+ return LunarUtil.CHONG[zhiIndex];
}
/**
@@ -277,7 +277,7 @@ public class LunarTime {
* @return 无情之克的时冲天干,如甲
*/
public String getChongGan() {
- return LunarUtil.CHONG_GAN[ganIndex + 1];
+ return LunarUtil.CHONG_GAN[ganIndex];
}
/**
@@ -286,7 +286,7 @@ public class LunarTime {
* @return 有情之克的时冲天干,如甲
*/
public String getChongGanTie() {
- return LunarUtil.CHONG_GAN_TIE[ganIndex + 1];
+ return LunarUtil.CHONG_GAN_TIE[ganIndex];
}
/**
diff --git a/src/main/java/com/nlf/calendar/Solar.java b/src/main/java/com/nlf/calendar/Solar.java
index b2238ce..6d50e48 100644
--- a/src/main/java/com/nlf/calendar/Solar.java
+++ b/src/main/java/com/nlf/calendar/Solar.java
@@ -386,7 +386,7 @@ public class Solar {
if (null != f) {
l.add(f);
}
- if (day + 7 >= SolarUtil.getDaysOfMonth(year, month)) {
+ if (day + 7 > SolarUtil.getDaysOfMonth(year, month)) {
f = SolarUtil.WEEK_FESTIVAL.get(month + "-0-" + week);
if (null != f) {
l.add(f);
diff --git a/src/main/java/com/nlf/calendar/util/LunarUtil.java b/src/main/java/com/nlf/calendar/util/LunarUtil.java
index a64e69e..5db5657 100644
--- a/src/main/java/com/nlf/calendar/util/LunarUtil.java
+++ b/src/main/java/com/nlf/calendar/util/LunarUtil.java
@@ -351,32 +351,17 @@ public class LunarUtil{
}
};
/** 地支相冲(子午相冲,丑未相冲,寅申相冲,辰戌相冲,卯酉相冲,巳亥相冲),由于地支对应十二生肖,也就对应了生肖相冲 */
- public static final String[] CHONG = {"","午","未","申","酉","戌","亥","子","丑","寅","卯","辰","巳"};
+ public static final String[] CHONG = {"午","未","申","酉","戌","亥","子","丑","寅","卯","辰","巳"};
/** 天干相冲之无情之克(阳克阳,阴克阴) */
- public static final String[] CHONG_GAN = {"","戊","己","庚","辛","壬","癸","甲","乙","丙","丁"};
- /** 天干四冲(无情之克中克得最严重的4个) */
- public static final Map CHONG_GAN_BAD = new HashMap(){
- private static final long serialVersionUID = -1;
- {
- put("庚","甲");
- put("辛","乙");
- put("壬","丙");
- put("癸","丁");
- }
- };
+ public static final String[] CHONG_GAN = {"戊","己","庚","辛","壬","癸","甲","乙","丙","丁"};
/** 天干相冲之有情之克(阳克阴,阴克阳) */
- public static final String[] CHONG_GAN_TIE = {"","己","戊","辛","庚","癸","壬","乙","甲","丁","丙"};
- /** 天干五合(有情之克中最有情的5个) */
- public static final Map CHONG_GAN_TIE_GOOD = new HashMap(){
- private static final long serialVersionUID = -1;
- {
- put("甲","己");
- put("丙","辛");
- put("戊","癸");
- put("庚","乙");
- put("壬","丁");
- }
- };
+ public static final String[] CHONG_GAN_TIE = {"己","戊","辛","庚","癸","壬","乙","甲","丁","丙"};
+ /** 天干四冲(无情之克中克得最严重的4个) */
+ public static final String[] CHONG_GAN_4 = {"庚","辛","壬","癸","","","甲","乙","丙","丁"};
+ /** 天干五合(有情之克中最有情的5个,甲己合,乙庚合,丙辛合,丁壬合,戊癸合) */
+ public static final String[] HE_GAN_5 = {"己","庚","辛","壬","癸","甲","乙","丙","丁","戊"};
+ /** 地支六合(子丑合,寅亥合,卯戌合,辰酉合,巳申合,午未合) */
+ public static final String[] HE_ZHI_6 = {"丑","子","亥","戌","酉","申","未","午","巳","辰","卯","寅"};
/** 煞(逢巳日、酉日、丑日必煞东;亥日、卯日、未日必煞西;申日、子日、辰日必煞南;寅日、午日、戌日必煞北) */
public static final Map SHA = new HashMap(){
private static final long serialVersionUID = -1;
diff --git a/src/main/java/com/nlf/calendar/util/SolarUtil.java b/src/main/java/com/nlf/calendar/util/SolarUtil.java
index cbd52a9..3f70559 100644
--- a/src/main/java/com/nlf/calendar/util/SolarUtil.java
+++ b/src/main/java/com/nlf/calendar/util/SolarUtil.java
@@ -100,6 +100,7 @@ public class SolarUtil {
put("5-5", Collections.nCopies(1, "马克思诞辰纪念日"));
put("5-8", Collections.nCopies(1, "世界红十字日"));
put("5-11", Collections.nCopies(1, "世界肥胖日"));
+ put("5-25", Collections.nCopies(1, "525心理健康节"));
put("5-27", Collections.nCopies(1, "上海解放日"));
put("5-31", Collections.nCopies(1, "世界无烟日"));
put("6-5", Collections.nCopies(1, "世界环境日"));
diff --git a/src/test/java/test/BaZiTest.java b/src/test/java/test/BaZiTest.java
index 56dabe3..b5d9a22 100644
--- a/src/test/java/test/BaZiTest.java
+++ b/src/test/java/test/BaZiTest.java
@@ -230,6 +230,24 @@ public class BaZiTest {
Assert.assertEquals("身宫", "壬午", lunar.getEightChar().getShenGong());
}
+ @Test
+ public void testShenGong1() {
+ Lunar lunar = new Solar(1994, 12, 6, 2, 0, 0).getLunar();
+ Assert.assertEquals("身宫", "丁丑", lunar.getEightChar().getShenGong());
+ }
+
+ @Test
+ public void testShenGong2() {
+ Lunar lunar = new Solar(1990, 12, 11, 6, 0, 0).getLunar();
+ Assert.assertEquals("身宫", "庚辰", lunar.getEightChar().getShenGong());
+ }
+
+ @Test
+ public void testShenGong3() {
+ Lunar lunar = new Solar(1993, 5, 23, 4, 0, 0).getLunar();
+ Assert.assertEquals("身宫", "庚申", lunar.getEightChar().getShenGong());
+ }
+
@Test
public void testBaZi2Solar() {
Solar solar = Solar.fromYmdHms(2027,1,27,12,0,0);