Skip to content

Commit

Permalink
v1.3.8 修复星期错误的问题;修正逐日胎神数据。
Browse files Browse the repository at this point in the history
  • Loading branch information
6tail committed Nov 7, 2023
1 parent 1c72c57 commit 9e36b07
Show file tree
Hide file tree
Showing 10 changed files with 127 additions and 34 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.7</version>
<version>1.3.8</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.7</version>
<version>1.3.8</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.7</version>
<version>1.3.8</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
12 changes: 4 additions & 8 deletions src/main/java/com/nlf/calendar/Lunar.java
Original file line number Diff line number Diff line change
Expand Up @@ -2944,21 +2944,17 @@ public Fu getFu() {
days = current.subtract(start);
Solar liQiuSolar = Solar.fromYmd(liQiu.getYear(), liQiu.getMonth(), liQiu.getDay());
// 末伏
if (!liQiuSolar.isAfter(start)) {
if (days < 10) {
return new Fu("末伏", days + 1);
}
} else {
if (liQiuSolar.isAfter(start)) {
// 中伏
if (days < 10) {
return new Fu("中伏", days + 11);
}
// 末伏第1天
start = start.next(10);
days = current.subtract(start);
if (days < 10) {
return new Fu("末伏", days + 1);
}
}
if (days < 10) {
return new Fu("末伏", days + 1);
}
return null;
}
Expand Down
21 changes: 1 addition & 20 deletions src/main/java/com/nlf/calendar/Solar.java
Original file line number Diff line number Diff line change
Expand Up @@ -358,26 +358,7 @@ public boolean isLeapYear() {
* @return 0123456
*/
public int getWeek() {
Solar start = fromYmd(1582, 10, 15);
int y = year;
int m = month;
int d = day;
Solar current = fromYmd(y, m, d);
// 蔡勒公式
if (m < 3) {
m += 12;
y--;
}
int c = y / 100;
y = y - c * 100;
int x = y + y / 4 + c / 4 - 2 * c;
int w;
if (current.isBefore(start)) {
w = (x + 13 * (m + 1) / 5 + d + 2) % 7;
} else {
w = (x + 26 * (m + 1) / 10 + d - 1) % 7;
}
return (w + 7) % 7;
return ((int)getJulianDay() + 7000002) % 7;
}

/**
Expand Down
11 changes: 9 additions & 2 deletions src/main/java/com/nlf/calendar/util/LunarUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,14 @@ public class LunarUtil{
/** 地支方位 */
public static final String[] POSITION_ZHI = {"坎","中","震","震","中","离","离","中","兑","兑","中","坎"};
/** 逐日胎神方位 */
public static final String[] POSITION_TAI_DAY = {"占门碓 外东南","碓磨厕 外东南","厨灶炉 外正南","仓库门 外正南","房床栖 外正南","占门床 外正南","占碓磨 外正南","厕灶厨 外西南","仓库炉 外西南","房床门 外西南","门碓栖 外西南","碓磨床 外西南","厨灶碓 外西南","仓库厕 外正西","房床炉 外正西","占大门 外正西","碓磨栖 外正西","厨房床 外正西","仓库碓 外西北","房床厕 外西北","占门炉 外西北","门碓磨 外西北","厨灶栖 外西北","仓库床 外西北","房床碓 外正北","占门厕 外正北","碓磨炉 外正北","厨灶门 外正北","仓库栖 外正北","占房床 房内北","占门碓 房内北","碓磨厕 房内北","厨灶炉 房内北","门仓库 房内北","床房栖 房内中","占门床 房内中","占碓磨 房内南","厨磨厕 房内南","仓库炉 房内南","房床门 房内西","门碓栖 房内东","碓磨床 房内东","厨灶碓 房内东","仓库厕 房内东","房床炉 房内中","占大门 外东北","碓磨栖 外东北","厨灶床 外东北","仓库碓 外东北","房床厕 外东北","占门炉 外东北","门碓磨 外正东","厨灶栖 外正东","仓库床 外正东","房床碓 外正东","占门厕 外正东","碓磨炉 外东南","厨灶门 外东南","仓库栖 外东南","占房床 外东南"};
public static final String[] POSITION_TAI_DAY = {
"占门碓 外东南","碓磨厕 外东南","厨灶炉 外正南","仓库门 外正南","房床栖 外正南","占门床 外正南","占碓磨 外正南","厨灶厕 外西南","仓库炉 外西南","房床门 外西南",
"占门栖 外西南","碓磨床 外西南","厨灶碓 外西南","仓库厕 外正西","房床炉 外正西","占大门 外正西","碓磨栖 外正西","厨灶床 外正西","仓库碓 外西北","房床厕 外西北",
"占门炉 外西北","碓磨门 外西北","厨灶栖 外西北","仓库床 外西北","房床碓 外正北","占门厕 外正北","碓磨炉 外正北","厨灶门 外正北","仓库栖 外正北","占房床 房内北",
"占门碓 房内北","碓磨厕 房内北","厨灶炉 房内北","仓库门 房内北","房床栖 房内中","占门床 房内中","占碓磨 房内南","厨灶厕 房内南","仓库炉 房内南","房床门 房内西",
"占门栖 房内东","碓磨床 房内东","厨灶碓 房内东","仓库厕 房内东","房床炉 房内中","占大门 外东北","碓磨栖 外东北","厨灶床 外东北","仓库碓 外东北","房床厕 外东北",
"占门炉 外东北","碓磨门 外正东","厨灶栖 外正东","仓库床 外正东","房床碓 外正东","占门厕 外正东","碓磨炉 外东南","厨灶门 外东南","仓库栖 外东南","占房床 外东南"
};
/** 逐月胎神方位 */
public static final String[] POSITION_TAI_MONTH = {"占房床","占户窗","占门堂","占厨灶","占房床","占床仓","占碓磨","占厕户","占门房","占房床","占灶炉","占房床"};
/** 地支 */
Expand Down Expand Up @@ -306,7 +313,7 @@ public class LunarUtil{
put("轸","吉");
}
};
/** 星宿对应吉凶 */
/** 星宿歌诀 */
public static final Map<String,String> XIU_SONG = new HashMap<String,String>(){
private static final long serialVersionUID = -1;
{
Expand Down
6 changes: 6 additions & 0 deletions src/test/java/test/LunarMonthTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,10 @@ public void test5(){
Assert.assertEquals("壬寅", month.getGanZhi());
}

@Test
public void test6(){
LunarMonth month = LunarMonth.fromYm(2023, 9);
Assert.assertEquals("癸亥", month.getGanZhi());
}

}
8 changes: 7 additions & 1 deletion src/test/java/test/LunarTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ public void test51() {
public void test52() {
Solar solar = Solar.fromYmd(2011, 11, 12);
Lunar lunar = solar.getLunar();
Assert.assertEquals("厕灶厨 外西南", lunar.getDayPositionTai());
Assert.assertEquals("厨灶厕 外西南", lunar.getDayPositionTai());
}

@Test
Expand Down Expand Up @@ -645,4 +645,10 @@ public void test94() {
Assert.assertEquals("九一七年冬月十六", lunar.toString());
}

@Test
public void test95() {
Lunar lunar = Solar.fromYmd(2023, 10, 30).getLunar();
Assert.assertEquals("闭", lunar.getZhiXing());
}

}
54 changes: 54 additions & 0 deletions src/test/java/test/NineStarTest.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package test;

import com.nlf.calendar.Lunar;
import com.nlf.calendar.LunarMonth;
import com.nlf.calendar.LunarYear;
import com.nlf.calendar.Solar;
import org.junit.Assert;
import org.junit.Test;
Expand All @@ -10,17 +12,69 @@ public class NineStarTest {
public void test1() {
Lunar lunar = Solar.fromYmd(1985, 2, 19).getLunar();
Assert.assertEquals("六", lunar.getYearNineStar().getNumber());
Assert.assertEquals("五黄土玉衡", lunar.getDayNineStar().toString());
}

@Test
public void test2() {
Lunar lunar = Lunar.fromYmd(2022, 1, 1);
Assert.assertEquals("六白金开阳", lunar.getYearNineStar().toString());
Assert.assertEquals("四绿木天权", lunar.getDayNineStar().toString());
}

@Test
public void test3() {
Lunar lunar = Lunar.fromYmd(2033, 1, 1);
Assert.assertEquals("四绿木天权", lunar.getYearNineStar().toString());
Assert.assertEquals("一白水天枢", lunar.getDayNineStar().toString());
}

@Test
public void test4() {
LunarYear y = LunarYear.fromYear(1985);
Assert.assertEquals("六白金开阳", y.getNineStar().toString());
}

@Test
public void test5() {
LunarYear y = LunarYear.fromYear(2022);
Assert.assertEquals("五黄土玉衡", y.getNineStar().toString());
}

@Test
public void test6() {
LunarYear y = LunarYear.fromYear(2033);
Assert.assertEquals("三碧木天玑", y.getNineStar().toString());
}

@Test
public void test7() {
LunarMonth m = LunarMonth.fromYm(1985, 2);
Assert.assertEquals("四绿木天权", m.getNineStar().toString());
}

@Test
public void test8() {
LunarMonth m = LunarMonth.fromYm(2022, 1);
Assert.assertEquals("二黒土天璇", m.getNineStar().toString());
}

@Test
public void test9() {
LunarMonth m = LunarMonth.fromYm(2033, 1);
Assert.assertEquals("五黄土玉衡", m.getNineStar().toString());
}

@Test
public void test10() {
Lunar d = Lunar.fromYmdHms(2033, 1, 1, 12, 0,0);
Assert.assertEquals("七赤金摇光", d.getTimeNineStar().toString());
}

@Test
public void test11() {
Lunar d = Lunar.fromYmdHms(2011, 5, 3, 23, 0,0);
Assert.assertEquals("七赤金摇光", d.getTimeNineStar().toString());
}

}
43 changes: 43 additions & 0 deletions src/test/java/test/WeekTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,47 @@ public void test2(){
Solar solar = Solar.fromYmd(1582, 10, 15);
Assert.assertEquals(5, solar.getWeek());
}

@Test
public void test3(){
Solar solar = Solar.fromYmd(1129, 11, 17);
Assert.assertEquals(0, solar.getWeek());
}

@Test
public void test4(){
Solar solar = Solar.fromYmd(1129, 11, 1);
Assert.assertEquals(5, solar.getWeek());
}

@Test
public void test5(){
Solar solar = Solar.fromYmd(8, 11, 1);
Assert.assertEquals(4, solar.getWeek());
}

@Test
public void test6(){
Solar solar = Solar.fromYmd(1582, 9, 30);
Assert.assertEquals(0, solar.getWeek());
}

@Test
public void test7(){
Solar solar = Solar.fromYmd(1582, 1, 1);
Assert.assertEquals(1, solar.getWeek());
}

@Test
public void test8(){
Solar solar = Solar.fromYmd(1500, 2, 29);
Assert.assertEquals(6, solar.getWeek());
}

@Test
public void test9(){
Solar solar = Solar.fromYmd(9865, 7, 26);
Assert.assertEquals(3, solar.getWeek());
}

}

0 comments on commit 9e36b07

Please sign in to comment.