diff --git a/src/main/java/com/nlf/calendar/Lunar.java b/src/main/java/com/nlf/calendar/Lunar.java index 51db4ea..9609467 100644 --- a/src/main/java/com/nlf/calendar/Lunar.java +++ b/src/main/java/com/nlf/calendar/Lunar.java @@ -1507,6 +1507,53 @@ public class Lunar{ return l; } + private List getBaZiShiShenZhi(String zhi){ + List baZi = getBaZi(); + String dayGan = baZi.get(2).substring(0,1); + List hideGan = LunarUtil.ZHI_HIDE_GAN.get(zhi); + List l = new ArrayList(hideGan.size()); + for(String gan:hideGan){ + l.add(LunarUtil.SHI_SHEN_ZHI.get(dayGan+zhi+gan)); + } + return l; + } + + /** + * 获取八字年支十神 + * @return 八字年支十神 + */ + public List getBaZiShiShenYearZhi(){ + List baZi = getBaZi(); + return getBaZiShiShenZhi(baZi.get(0).substring(1)); + } + + /** + * 获取八字月支十神 + * @return 八字月支十神 + */ + public List getBaZiShiShenMonthZhi(){ + List baZi = getBaZi(); + return getBaZiShiShenZhi(baZi.get(1).substring(1)); + } + + /** + * 获取八字日支十神 + * @return 八字日支十神 + */ + public List getBaZiShiShenDayZhi(){ + List baZi = getBaZi(); + return getBaZiShiShenZhi(baZi.get(2).substring(1)); + } + + /** + * 获取八字时支十神 + * @return 八字时支十神 + */ + public List getBaZiShiShenTimeZhi(){ + List baZi = getBaZi(); + return getBaZiShiShenZhi(baZi.get(3).substring(1)); + } + /** * 获取十二执星:建、除、满、平、定、执、破、危、成、收、开、闭。当月支与日支相同即为建,依次类推 * @return 执星 diff --git a/src/test/java/sample/BaZiTest.java b/src/test/java/sample/BaZiTest.java index f649ba8..fc629e5 100644 --- a/src/test/java/sample/BaZiTest.java +++ b/src/test/java/sample/BaZiTest.java @@ -103,4 +103,24 @@ public class BaZiTest { } } + @Test + public void testBaziShiShenZhi() { + Solar solar = new Solar(2020,1,1,22,35,0); + Lunar lunar = solar.getLunar(); + //[己亥, 丙子, 癸卯, 癸亥] + System.out.println(lunar.getBaZi()); + //[七杀, 正财, 日主, 比肩] + System.out.println(lunar.getBaZiShiShenGan()); + //[劫财, 比肩, 食神, 劫财] + System.out.println(lunar.getBaZiShiShenZhi()); + //[劫财, 伤官] + System.out.println(lunar.getBaZiShiShenYearZhi()); + //[比肩] + System.out.println(lunar.getBaZiShiShenMonthZhi()); + //[食神] + System.out.println(lunar.getBaZiShiShenDayZhi()); + //[劫财, 伤官] + System.out.println(lunar.getBaZiShiShenTimeZhi()); + } + }