Skip to content

Commit

Permalink
v1.3.10 修复八字转阳历为空的问题;修复一处法定假日数据错误;十神优化。
Browse files Browse the repository at this point in the history
  • Loading branch information
6tail committed Jan 3, 2024
1 parent a174022 commit 1411d80
Show file tree
Hide file tree
Showing 9 changed files with 73 additions and 118 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)
<dependency>
<groupId>cn.6tail</groupId>
<artifactId>lunar</artifactId>
<version>1.3.9</version>
<version>1.3.10</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ lunar is a calendar library for Solar and Chinese Lunar.
<dependency>
<groupId>cn.6tail</groupId>
<artifactId>lunar</artifactId>
<version>1.3.9</version>
<version>1.3.10</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<groupId>cn.6tail</groupId>
<artifactId>lunar</artifactId>
<packaging>jar</packaging>
<version>1.3.9</version>
<version>1.3.10</version>
<name>${project.groupId}:${project.artifactId}</name>
<url>https://github.com/6tail/lunar-java</url>
<description>a calendar library for Solar and Chinese Lunar</description>
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/com/nlf/calendar/EightChar.java
Original file line number Diff line number Diff line change
Expand Up @@ -145,14 +145,14 @@ public String getYearNaYin() {
* @return 十神
*/
public String getYearShiShenGan() {
return LunarUtil.SHI_SHEN_GAN.get(getDayGan() + getYearGan());
return LunarUtil.SHI_SHEN.get(getDayGan() + getYearGan());
}

private List<String> getShiShenZhi(String zhi) {
List<String> hideGan = LunarUtil.ZHI_HIDE_GAN.get(zhi);
List<String> l = new ArrayList<String>(hideGan.size());
for (String gan : hideGan) {
l.add(LunarUtil.SHI_SHEN_ZHI.get(getDayGan() + gan));
l.add(LunarUtil.SHI_SHEN.get(getDayGan() + gan));
}
return l;
}
Expand Down Expand Up @@ -264,7 +264,7 @@ public String getMonthNaYin() {
* @return 十神
*/
public String getMonthShiShenGan() {
return LunarUtil.SHI_SHEN_GAN.get(getDayGan() + getMonthGan());
return LunarUtil.SHI_SHEN.get(getDayGan() + getMonthGan());
}

/**
Expand Down Expand Up @@ -426,7 +426,7 @@ public String getTimeNaYin() {
* @return 十神
*/
public String getTimeShiShenGan() {
return LunarUtil.SHI_SHEN_GAN.get(getDayGan() + getTimeGan());
return LunarUtil.SHI_SHEN.get(getDayGan() + getTimeGan());
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/nlf/calendar/Solar.java
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ public static List<Solar> fromBaZi(String yearGanZhi, String monthGanZhi, String
List<Solar> l = new ArrayList<Solar>();
List<Integer> years = new ArrayList<Integer>();
Solar today = fromDate(new Date());
int offsetYear = LunarUtil.getJiaZiIndex(today.getLunar().getYearInGanZhiExact())-LunarUtil.getJiaZiIndex(yearGanZhi);
int offsetYear = (today.getYear() - 4) % 60 - LunarUtil.getJiaZiIndex(yearGanZhi);
if(offsetYear < 0){
offsetYear += 60;
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/nlf/calendar/util/HolidayUtil.java

Large diffs are not rendered by default.

111 changes: 2 additions & 109 deletions src/main/java/com/nlf/calendar/util/LunarUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -605,8 +605,8 @@ public class LunarUtil{
}
};

/** 天干十神,日主+天干为键 */
public static final Map<String,String> SHI_SHEN_GAN = new HashMap<String,String>() {
/** 十神,日主+天干为键 */
public static final Map<String,String> SHI_SHEN = new HashMap<String,String>() {
private static final long serialVersionUID = -1;
{
put("甲甲","比肩");
Expand Down Expand Up @@ -712,113 +712,6 @@ public class LunarUtil{
}
};

/** 地支十神,日主+地支藏干主气为键 */
public static final Map<String,String> SHI_SHEN_ZHI = new HashMap<String,String>() {
private static final long serialVersionUID = -1;
{
put("甲癸","正印");
put("甲己","正财");
put("甲辛","正官");
put("甲丙","食神");
put("甲甲","比肩");
put("甲戊","偏财");
put("甲乙","劫财");
put("甲庚","七杀");
put("甲丁","伤官");
put("甲壬","偏印");
put("乙癸","偏印");
put("乙己","偏财");
put("乙辛","七杀");
put("乙丙","伤官");
put("乙甲","劫财");
put("乙戊","正财");
put("乙乙","比肩");
put("乙庚","正官");
put("乙丁","食神");
put("乙壬","正印");
put("丙癸","正官");
put("丙己","伤官");
put("丙辛","正财");
put("丙丙","比肩");
put("丙甲","偏印");
put("丙戊","食神");
put("丙乙","正印");
put("丙庚","偏财");
put("丙丁","劫财");
put("丙壬","七杀");
put("丁癸","七杀");
put("丁己","食神");
put("丁辛","偏财");
put("丁丙","劫财");
put("丁甲","正印");
put("丁戊","伤官");
put("丁乙","偏印");
put("丁庚","正财");
put("丁丁","比肩");
put("丁壬","正官");
put("戊癸","正财");
put("戊己","劫财");
put("戊辛","伤官");
put("戊丙","偏印");
put("戊甲","七杀");
put("戊戊","比肩");
put("戊乙","正官");
put("戊庚","食神");
put("戊丁","正印");
put("戊壬","偏财");
put("己癸","偏财");
put("己己","比肩");
put("己辛","食神");
put("己丙","正印");
put("己甲","正官");
put("己戊","劫财");
put("己乙","七杀");
put("己庚","伤官");
put("己丁","偏印");
put("己壬","正财");
put("庚癸","伤官");
put("庚己","正印");
put("庚辛","劫财");
put("庚丙","七杀");
put("庚甲","偏财");
put("庚戊","偏印");
put("庚乙","正财");
put("庚庚","比肩");
put("庚丁","正官");
put("庚壬","食神");
put("辛癸","食神");
put("辛己","偏印");
put("辛辛","比肩");
put("辛丙","正官");
put("辛甲","正财");
put("辛戊","正印");
put("辛乙","偏财");
put("辛庚","劫财");
put("辛丁","七杀");
put("辛壬","伤官");
put("壬癸","劫财");
put("壬己","正官");
put("壬辛","正印");
put("壬丙","偏财");
put("壬甲","食神");
put("壬戊","七杀");
put("壬乙","伤官");
put("壬庚","偏印");
put("壬丁","正财");
put("壬壬","比肩");
put("癸癸","比肩");
put("癸己","七杀");
put("癸辛","偏印");
put("癸丙","正财");
put("癸甲","伤官");
put("癸戊","正官");
put("癸乙","食神");
put("癸庚","正印");
put("癸丁","偏财");
put("癸壬","劫财");
}
};

/** 地支藏干表,分别为主气、余气、杂气 */
public static final Map<String,List<String>> ZHI_HIDE_GAN = new HashMap<String,List<String>>() {
private static final long serialVersionUID = -1;
Expand Down
31 changes: 31 additions & 0 deletions src/test/java/sample/HolidayTest.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package sample;

import com.nlf.calendar.Holiday;
import com.nlf.calendar.Solar;
import com.nlf.calendar.util.HolidayUtil;
import org.junit.Test;

import java.util.List;

public class HolidayTest {

@Test
Expand All @@ -20,4 +24,31 @@ public void test(){
System.out.println(HolidayUtil.getHolidaysByTarget("20200501"));
System.out.println(HolidayUtil.getHolidaysByTarget(2011,1,1));
}

@Test
public void test1(){
StringBuilder s = new StringBuilder();
for(int i = 2001; i <= 2024; i++) {
List<Holiday> l = HolidayUtil.getHolidays(i);
for (Holiday d : l) {
int index = -1;
for (int x = 0;x <HolidayUtil.NAMES.length;x++) {
if (HolidayUtil.NAMES[x].equals(d.getName())) {
index = x;
break;
}
}
if (index == -1) {
throw new IllegalArgumentException(d.getName());
}
String day = d.getDay();
String target = d.getTarget();
Solar solar = Solar.fromYmd(Integer.parseInt(day.substring(0,4)), Integer.parseInt(day.substring(5,7)), Integer.parseInt(day.substring(8)));
Solar targetSolar = Solar.fromYmd(Integer.parseInt(target.substring(0,4)), Integer.parseInt(target.substring(5,7)), Integer.parseInt(target.substring(8)));
int diff = targetSolar.subtract(solar);
s.append(String.format("%s%d%d%s%02d", d.getDay().replace("-",""), d.isWork() ? 0 : 1, index, diff < 0 ? "-" : "+", Math.abs(diff)));
}
}
System.out.println(s);
}
}
31 changes: 31 additions & 0 deletions src/test/java/test/BaZiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -406,4 +406,35 @@ public void test16() {
expected.add("1959-12-17 16:00:00");
Assert.assertEquals(expected, actual);
}

@Test
public void test17() {
Solar solar = new Solar(1986, 5, 29, 13, 37, 0);
Lunar lunar = solar.getLunar();
EightChar eightChar = lunar.getEightChar();
Assert.assertEquals("辛丑", eightChar.getShenGong());
}

@Test
public void test18() {
Solar solar = new Solar(2023, 10, 8, 18, 37, 0);
Lunar lunar = solar.getLunar();
EightChar eightChar = lunar.getEightChar();
Assert.assertEquals("己未", eightChar.getShenGong());
}

@Test
public void test19() {
List<Solar> l = Solar.fromBaZi("丁丑","癸卯","癸丑","辛酉");
List<String> actual = new ArrayList<String>();
for (Solar solar : l) {
actual.add(solar.toYmdHms());
}

List<String> expected = new ArrayList<String>();
expected.add("1997-03-12 18:00:00");
expected.add("1937-03-27 18:00:00");
Assert.assertEquals(expected, actual);
}

}

0 comments on commit 1411d80

Please sign in to comment.