Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
264481532b | ||
|
|
2fedf45007 | ||
|
|
0d226722d6 | ||
|
|
6dbf70186d | ||
|
|
b6bde78e59 | ||
|
|
701cec10a0 | ||
|
|
0a4d172ef6 | ||
|
|
1c3ff0cbc5 | ||
|
|
e15a916e55 |
34
CHANGELOG.md
Normal file
34
CHANGELOG.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Changelog
|
||||
|
||||
|
||||
## [1.3.12] - 2024-02-06
|
||||
1. 八字转阳历结果按时间先后排序,转换速度大幅提升。
|
||||
|
||||
## [1.3.13] - 2024-02-29
|
||||
1. 修复节气当天获取下一节气仍为当前节气的问题。
|
||||
2. 修复每日宜忌存在重复项的问题。
|
||||
3. 修复八字转阳历存在遗漏的问题。
|
||||
|
||||
## [1.3.14] - 2024-03-17
|
||||
1. 修复八字转阳历存在遗漏的问题。
|
||||
|
||||
## [1.3.15] - 2024-11-12
|
||||
1. 新增2025年法定假日数据。
|
||||
|
||||
## [1.4.0] - 2025-02-06
|
||||
1. 修复九星错别字。
|
||||
2. 优化每日宜忌算法。
|
||||
3. 去除每日宜忌的重复项。
|
||||
> 不建议使用该版本
|
||||
|
||||
## [1.7.0] - 2025-02-12
|
||||
1. 修复每日宜忌错别字。
|
||||
> 不建议使用该版本
|
||||
|
||||
## [1.7.1] - 2025-02-27
|
||||
1. 修复每日宜忌错误。
|
||||
> 不建议使用该版本
|
||||
|
||||
## [1.7.2] - 2025-03-05
|
||||
1. 修复每日宜忌错误。
|
||||
2. 更新2018之后的△T参数。
|
||||
@@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)
|
||||
<dependency>
|
||||
<groupId>cn.6tail</groupId>
|
||||
<artifactId>lunar</artifactId>
|
||||
<version>1.3.10</version>
|
||||
<version>1.7.2</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
|
||||
@@ -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.10</version>
|
||||
<version>1.7.2</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
|
||||
3
pom.xml
3
pom.xml
@@ -7,7 +7,7 @@
|
||||
<groupId>cn.6tail</groupId>
|
||||
<artifactId>lunar</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>1.3.10</version>
|
||||
<version>1.7.2</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>
|
||||
@@ -104,6 +104,7 @@
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<javadocExecutable>${java.home}/../bin/javadoc</javadocExecutable>
|
||||
<additionalparam>-Xdoclint:none</additionalparam>
|
||||
<source>${source-version}</source>
|
||||
</configuration>
|
||||
|
||||
@@ -499,29 +499,15 @@ public class EightChar {
|
||||
* @return 命宫
|
||||
*/
|
||||
public String getMingGong() {
|
||||
int monthZhiIndex = 0;
|
||||
int timeZhiIndex = 0;
|
||||
for (int i = 0, j = MONTH_ZHI.length; i < j; i++) {
|
||||
String zhi = MONTH_ZHI[i];
|
||||
if (lunar.getMonthZhiExact().equals(zhi)) {
|
||||
monthZhiIndex = i;
|
||||
}
|
||||
if (lunar.getTimeZhi().equals(zhi)) {
|
||||
timeZhiIndex = i;
|
||||
}
|
||||
int monthZhiIndex = LunarUtil.find(getMonthZhi(), MONTH_ZHI, 0);
|
||||
int timeZhiIndex = LunarUtil.find(getTimeZhi(), MONTH_ZHI, 0);
|
||||
int offset = monthZhiIndex + timeZhiIndex;
|
||||
offset = (offset >= 14 ? 26 : 14) - offset;
|
||||
int ganIndex = (lunar.getYearGanIndexExact() + 1) * 2 + offset;
|
||||
while (ganIndex > 10) {
|
||||
ganIndex -= 10;
|
||||
}
|
||||
int zhiIndex = 26 - (monthZhiIndex + timeZhiIndex);
|
||||
if (zhiIndex > 12) {
|
||||
zhiIndex -= 12;
|
||||
}
|
||||
int jiaZiIndex = LunarUtil.getJiaZiIndex(lunar.getMonthInGanZhiExact()) - (monthZhiIndex - zhiIndex);
|
||||
if (jiaZiIndex >= 60) {
|
||||
jiaZiIndex -= 60;
|
||||
}
|
||||
if (jiaZiIndex < 0) {
|
||||
jiaZiIndex += 60;
|
||||
}
|
||||
return LunarUtil.JIA_ZI[jiaZiIndex];
|
||||
return LunarUtil.GAN[ganIndex] + MONTH_ZHI[offset];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -539,29 +525,17 @@ public class EightChar {
|
||||
* @return 身宫
|
||||
*/
|
||||
public String getShenGong() {
|
||||
int monthZhiIndex = 0;
|
||||
int timeZhiIndex = 0;
|
||||
for (int i = 0, j = MONTH_ZHI.length; i < j; i++) {
|
||||
String zhi = MONTH_ZHI[i];
|
||||
if (lunar.getMonthZhiExact().equals(zhi)) {
|
||||
monthZhiIndex = i;
|
||||
}
|
||||
if (lunar.getTimeZhi().equals(zhi)) {
|
||||
timeZhiIndex = i;
|
||||
}
|
||||
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 zhiIndex = 2 + monthZhiIndex + timeZhiIndex;
|
||||
if (zhiIndex > 12) {
|
||||
zhiIndex -= 12;
|
||||
int ganIndex = (lunar.getYearGanIndexExact() + 1) * 2 + (offset % 12);
|
||||
while (ganIndex > 10) {
|
||||
ganIndex -= 10;
|
||||
}
|
||||
int jiaZiIndex = LunarUtil.getJiaZiIndex(lunar.getMonthInGanZhiExact()) - (monthZhiIndex - zhiIndex);
|
||||
if (jiaZiIndex >= 60) {
|
||||
jiaZiIndex -= 60;
|
||||
}
|
||||
if (jiaZiIndex < 0) {
|
||||
jiaZiIndex += 60;
|
||||
}
|
||||
return LunarUtil.JIA_ZI[jiaZiIndex];
|
||||
return LunarUtil.GAN[ganIndex] + MONTH_ZHI[offset];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2380,7 +2380,7 @@ public class Lunar {
|
||||
Solar solar = entry.getValue();
|
||||
String day = wholeDay ? solar.toYmd() : solar.toYmdHms();
|
||||
if (forward) {
|
||||
if (day.compareTo(today) < 0) {
|
||||
if (day.compareTo(today) <= 0) {
|
||||
continue;
|
||||
}
|
||||
if (null == near) {
|
||||
|
||||
@@ -18,7 +18,7 @@ public class NineStar {
|
||||
/**
|
||||
* 七色
|
||||
*/
|
||||
public static final String[] COLOR = {"白", "黒", "碧", "绿", "黄", "白", "赤", "白", "紫"};
|
||||
public static final String[] COLOR = {"白", "黑", "碧", "绿", "黄", "白", "赤", "白", "紫"};
|
||||
|
||||
/**
|
||||
* 五行
|
||||
|
||||
@@ -89,9 +89,13 @@ public class Solar {
|
||||
if (month < 1 || month > 12) {
|
||||
throw new IllegalArgumentException(String.format("wrong month %d", month));
|
||||
}
|
||||
if (day < 1 || day > 31) {
|
||||
if (day < 1) {
|
||||
throw new IllegalArgumentException(String.format("wrong day %d", day));
|
||||
}
|
||||
int days = SolarUtil.getDaysOfMonth(year, month);
|
||||
if (day > days) {
|
||||
throw new IllegalArgumentException(String.format("only %d days in solar year %d month %d", days, year, month));
|
||||
}
|
||||
if (hour < 0 || hour > 23) {
|
||||
throw new IllegalArgumentException(String.format("wrong hour %d", hour));
|
||||
}
|
||||
@@ -296,49 +300,72 @@ public class Solar {
|
||||
public static List<Solar> fromBaZi(String yearGanZhi, String monthGanZhi, String dayGanZhi, String timeGanZhi, int sect, int baseYear) {
|
||||
sect = (1 == sect) ? 1 : 2;
|
||||
List<Solar> l = new ArrayList<Solar>();
|
||||
List<Integer> years = new ArrayList<Integer>();
|
||||
Solar today = fromDate(new Date());
|
||||
int offsetYear = (today.getYear() - 4) % 60 - LunarUtil.getJiaZiIndex(yearGanZhi);
|
||||
if(offsetYear < 0){
|
||||
offsetYear += 60;
|
||||
// 月地支距寅月的偏移值
|
||||
int m = LunarUtil.find(monthGanZhi.substring(1), LunarUtil.ZHI, -1) - 2;
|
||||
if (m < 0) {
|
||||
m += 12;
|
||||
}
|
||||
int startYear = today.getYear() - offsetYear - 1;
|
||||
int minYear = baseYear - 2;
|
||||
while (startYear >= minYear) {
|
||||
years.add(startYear);
|
||||
startYear -= 60;
|
||||
// 月天干要一致
|
||||
if (((LunarUtil.find(yearGanZhi.substring(0, 1), LunarUtil.GAN, -1) + 1) * 2 + m) % 10 != LunarUtil.find(monthGanZhi.substring(0, 1), LunarUtil.GAN, -1)) {
|
||||
return l;
|
||||
}
|
||||
List<Integer> hours = new ArrayList<Integer>(2);
|
||||
String timeZhi = timeGanZhi.substring(1);
|
||||
for(int i = 1, j = LunarUtil.ZHI.length; i < j; i++){
|
||||
if(LunarUtil.ZHI[i].equals(timeZhi)){
|
||||
hours.add((i - 1) * 2);
|
||||
break;
|
||||
}
|
||||
// 1年的立春是辛酉,序号57
|
||||
int y = LunarUtil.getJiaZiIndex(yearGanZhi) - 57;
|
||||
if (y < 0) {
|
||||
y += 60;
|
||||
}
|
||||
if ("子".equals(timeZhi)) {
|
||||
hours.add(23);
|
||||
y++;
|
||||
// 节令偏移值
|
||||
m *= 2;
|
||||
// 时辰地支转时刻,子时按零点算
|
||||
int h = LunarUtil.find(timeGanZhi.substring(1), LunarUtil.ZHI, -1) * 2;
|
||||
int[] hours = {h};
|
||||
if (0 == h && 2 == sect) {
|
||||
hours = new int[]{0, 23};
|
||||
}
|
||||
for (int hour: hours) {
|
||||
for (Integer y : years) {
|
||||
int maxYear = y + 3;
|
||||
int year = y;
|
||||
int month = 11;
|
||||
if (year < baseYear) {
|
||||
year = baseYear;
|
||||
month = 1;
|
||||
}
|
||||
Solar solar = fromYmdHms(year, month, 1, hour, 0, 0);
|
||||
while (solar.getYear() <= maxYear) {
|
||||
Lunar lunar = solar.getLunar();
|
||||
String dgz = (2 == sect) ? lunar.getDayInGanZhiExact2() : lunar.getDayInGanZhiExact();
|
||||
if (lunar.getYearInGanZhiExact().equals(yearGanZhi) && lunar.getMonthInGanZhiExact().equals(monthGanZhi) && dgz.equals(dayGanZhi) && lunar.getTimeInGanZhi().equals(timeGanZhi)) {
|
||||
l.add(solar);
|
||||
break;
|
||||
int startYear = baseYear - 1;
|
||||
|
||||
// 结束年
|
||||
Calendar c = Calendar.getInstance(TIME_ZONE);
|
||||
c.setTime(new Date());
|
||||
c.set(Calendar.MILLISECOND, 0);
|
||||
int endYear = c.get(Calendar.YEAR);
|
||||
|
||||
while (y <= endYear) {
|
||||
if (y >= startYear) {
|
||||
// 立春为寅月的开始
|
||||
List<Solar> jieQiList = new ArrayList<Solar>(Lunar.fromYmd(y, 1, 1).getJieQiTable().values());
|
||||
// 节令推移,年干支和月干支就都匹配上了
|
||||
Solar solarTime = jieQiList.get(4 + m);
|
||||
if (solarTime.getYear() >= baseYear) {
|
||||
// 日干支和节令干支的偏移值
|
||||
int d = LunarUtil.getJiaZiIndex(dayGanZhi) - LunarUtil.getJiaZiIndex(solarTime.getLunar().getDayInGanZhiExact2());
|
||||
if (d < 0) {
|
||||
d += 60;
|
||||
}
|
||||
if (d > 0) {
|
||||
// 从节令推移天数
|
||||
solarTime = solarTime.next(d);
|
||||
}
|
||||
for (int hour : hours) {
|
||||
int mi = 0;
|
||||
int s = 0;
|
||||
if (d == 0 && hour == solarTime.getHour()) {
|
||||
// 如果正好是节令当天,且小时和节令的小时数相等的极端情况,把分钟和秒钟带上
|
||||
mi = solarTime.getMinute();
|
||||
s = solarTime.getSecond();
|
||||
}
|
||||
// 验证一下
|
||||
Solar solar = Solar.fromYmdHms(solarTime.getYear(), solarTime.getMonth(), solarTime.getDay(), hour, mi, s);
|
||||
Lunar lunar = solar.getLunar();
|
||||
String dgz = (2 == sect) ? lunar.getDayInGanZhiExact2() : lunar.getDayInGanZhiExact();
|
||||
if (lunar.getYearInGanZhiExact().equals(yearGanZhi) && lunar.getMonthInGanZhiExact().equals(monthGanZhi) && dgz.equals(dayGanZhi) && lunar.getTimeInGanZhi().equals(timeGanZhi)) {
|
||||
l.add(solar);
|
||||
}
|
||||
}
|
||||
solar = solar.next(1);
|
||||
}
|
||||
}
|
||||
y += 60;
|
||||
}
|
||||
return l;
|
||||
}
|
||||
@@ -358,7 +385,7 @@ public class Solar {
|
||||
* @return 0123456
|
||||
*/
|
||||
public int getWeek() {
|
||||
return ((int)(getJulianDay() + 0.5) + 7000001) % 7;
|
||||
return ((int) (getJulianDay() + 0.5) + 7000001) % 7;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -583,6 +610,7 @@ public class Solar {
|
||||
|
||||
/**
|
||||
* 阳历日期相减,获得相差天数
|
||||
*
|
||||
* @param solar 阳历
|
||||
* @return 天数
|
||||
*/
|
||||
@@ -592,6 +620,7 @@ public class Solar {
|
||||
|
||||
/**
|
||||
* 阳历日期相减,获得相差分钟数
|
||||
*
|
||||
* @param solar 阳历
|
||||
* @return 分钟数
|
||||
*/
|
||||
@@ -610,6 +639,7 @@ public class Solar {
|
||||
|
||||
/**
|
||||
* 是否在指定日期之后
|
||||
*
|
||||
* @param solar 阳历
|
||||
* @return true/false
|
||||
*/
|
||||
@@ -649,6 +679,7 @@ public class Solar {
|
||||
|
||||
/**
|
||||
* 是否在指定日期之前
|
||||
*
|
||||
* @param solar 阳历
|
||||
* @return true/false
|
||||
*/
|
||||
@@ -688,6 +719,7 @@ public class Solar {
|
||||
|
||||
/**
|
||||
* 年推移
|
||||
*
|
||||
* @param years 年数
|
||||
* @return 阳历
|
||||
*/
|
||||
@@ -711,6 +743,7 @@ public class Solar {
|
||||
|
||||
/**
|
||||
* 月推移
|
||||
*
|
||||
* @param months 月数
|
||||
* @return 阳历
|
||||
*/
|
||||
@@ -771,7 +804,7 @@ public class Solar {
|
||||
d += days;
|
||||
}
|
||||
if (1582 == y && 10 == m) {
|
||||
if (d > 4 ) {
|
||||
if (d > 4) {
|
||||
d += 10;
|
||||
}
|
||||
}
|
||||
@@ -786,7 +819,7 @@ public class Solar {
|
||||
* @return 阳历日期
|
||||
*/
|
||||
public Solar next(int days, boolean onlyWorkday) {
|
||||
if(!onlyWorkday) {
|
||||
if (!onlyWorkday) {
|
||||
return next(days);
|
||||
}
|
||||
Solar solar = fromYmdHms(year, month, day, hour, minute, second);
|
||||
@@ -815,6 +848,7 @@ public class Solar {
|
||||
|
||||
/**
|
||||
* 小时推移
|
||||
*
|
||||
* @param hours 小时数
|
||||
* @return 阳历
|
||||
*/
|
||||
@@ -834,6 +868,7 @@ public class Solar {
|
||||
|
||||
/**
|
||||
* 获取薪资比例(感谢 https://gitee.com/smr1987)
|
||||
*
|
||||
* @return 薪资比例:1/2/3
|
||||
*/
|
||||
public int getSalaryRate() {
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.nlf.calendar.util.LunarUtil;
|
||||
*/
|
||||
public class LiuYue {
|
||||
/**
|
||||
* 序数,0-9
|
||||
* 序数,0-11
|
||||
*/
|
||||
private final int index;
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -56,8 +56,10 @@ public class ShouXingUtil {
|
||||
2000, 63.87, 0.1, 0, 0,
|
||||
2005, 64.7, 0.21, 0, 0,
|
||||
2012, 66.8, 0.22, 0, 0,
|
||||
2018, 69.0, 0.36, 0, 0,
|
||||
2028, 72.6
|
||||
2018, 73.6, 0.40, 0, 0,
|
||||
2021, 78.1, 0.44, 0, 0,
|
||||
2024, 83.1, 0.55, 0, 0,
|
||||
2028, 98.6
|
||||
};
|
||||
private static final double[] XL0 = {
|
||||
10000000000D,
|
||||
|
||||
@@ -3,6 +3,7 @@ package test;
|
||||
import com.nlf.calendar.EightChar;
|
||||
import com.nlf.calendar.Lunar;
|
||||
import com.nlf.calendar.Solar;
|
||||
import com.nlf.calendar.eightchar.Yun;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -234,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
|
||||
@@ -258,8 +259,8 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1976-09-21 12:00:00");
|
||||
expected.add("1916-10-06 12:00:00");
|
||||
expected.add("1976-09-21 12:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -285,8 +286,8 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1999-07-21 16:00:00");
|
||||
expected.add("1939-08-05 16:00:00");
|
||||
expected.add("1999-07-21 16:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -299,8 +300,8 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1960-12-17 12:00:00");
|
||||
expected.add("1901-01-01 12:00:00");
|
||||
expected.add("1960-12-17 12:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -313,8 +314,8 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("2020-07-21 22:00:00");
|
||||
expected.add("1960-08-05 22:00:00");
|
||||
expected.add("2020-07-21 22:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -368,15 +369,15 @@ public class BaZiTest {
|
||||
|
||||
@Test
|
||||
public void test14() {
|
||||
List<Solar> l = Solar.fromBaZi("癸卯","甲寅","癸丑","甲子", 2, 1843);
|
||||
List<Solar> l = Solar.fromBaZi("癸卯","甲寅","甲寅","甲子", 2, 1843);
|
||||
List<String> actual = new ArrayList<String>();
|
||||
for (Solar solar : l) {
|
||||
actual.add(solar.toYmdHms());
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("2023-02-24 23:00:00");
|
||||
expected.add("1843-02-08 23:00:00");
|
||||
expected.add("1843-02-09 00:00:00");
|
||||
expected.add("2023-02-25 00:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -389,8 +390,8 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1960-01-15 16:00:00");
|
||||
expected.add("1900-01-29 16:00:00");
|
||||
expected.add("1960-01-15 16:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@@ -412,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
|
||||
@@ -432,8 +433,113 @@ public class BaZiTest {
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1997-03-12 18:00:00");
|
||||
expected.add("1937-03-27 18:00:00");
|
||||
expected.add("1997-03-12 18:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test20() {
|
||||
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("1955-03-17 08:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test21() {
|
||||
Lunar lunar = Solar.fromYmdHms(2024, 1, 29, 9, 30, 0).getLunar();
|
||||
EightChar eightChar = lunar.getEightChar();
|
||||
Assert.assertEquals("命宫", "癸亥", eightChar.getMingGong());
|
||||
Assert.assertEquals("身宫", "己未", eightChar.getShenGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test22() {
|
||||
Assert.assertEquals("身宫", "丙寅", Solar.fromYmdHms(1990, 1, 27, 0, 0, 0).getLunar().getEightChar().getShenGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test23() {
|
||||
Assert.assertEquals("甲戌", Solar.fromYmdHms(2019, 3, 7, 8, 0, 0).getLunar().getEightChar().getMingGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test24() {
|
||||
Assert.assertEquals("丁丑", Solar.fromYmdHms(2019, 3, 27, 2, 0, 0).getLunar().getEightChar().getMingGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test25() {
|
||||
Assert.assertEquals("丙寅", Lunar.fromYmdHms(1994, 5, 20, 18, 0 ,0).getEightChar().getMingGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test26() {
|
||||
Lunar lunar = Solar.fromYmdHms(1986, 2, 16, 8, 0, 0).getLunar();
|
||||
EightChar eightChar = lunar.getEightChar();
|
||||
Assert.assertEquals("命宫", "己亥", eightChar.getMingGong());
|
||||
Assert.assertEquals("身宫", "乙未", eightChar.getShenGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test27() {
|
||||
Lunar lunar = Solar.fromYmdHms(1972, 11, 27, 10, 0, 0).getLunar();
|
||||
EightChar eightChar = lunar.getEightChar();
|
||||
Assert.assertEquals("身宫", "乙巳", eightChar.getShenGong());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test28() {
|
||||
Lunar lunar = Solar.fromYmdHms(1986, 5, 29, 13, 37, 0).getLunar();
|
||||
EightChar eightChar = lunar.getEightChar();
|
||||
Yun yun = eightChar.getYun(1, 2);
|
||||
Assert.assertEquals(2, yun.getStartYear());
|
||||
Assert.assertEquals(7, yun.getStartMonth());
|
||||
Assert.assertEquals(0, yun.getStartDay());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test29() {
|
||||
List<Solar> l = Solar.fromBaZi("甲辰","丙寅","壬戌","壬子", 2);
|
||||
List<String> actual = new ArrayList<String>();
|
||||
for (Solar solar : l) {
|
||||
actual.add(solar.toYmdHms());
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("2024-02-28 23:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test30() {
|
||||
List<Solar> l = Solar.fromBaZi("甲辰","丙寅","癸亥","壬子", 1);
|
||||
List<String> actual = new ArrayList<String>();
|
||||
for (Solar solar : l) {
|
||||
actual.add(solar.toYmdHms());
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("2024-02-29 00:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test31() {
|
||||
List<Solar> l = Solar.fromBaZi("丁卯","丁未","甲申","乙丑", 1, 1900);
|
||||
List<String> actual = new ArrayList<String>();
|
||||
for (Solar solar : l) {
|
||||
actual.add(solar.toYmdHms());
|
||||
}
|
||||
|
||||
List<String> expected = new ArrayList<String>();
|
||||
expected.add("1987-08-03 02:00:00");
|
||||
Assert.assertEquals(expected, actual);
|
||||
}
|
||||
|
||||
|
||||
@@ -21,30 +21,30 @@ public class JieQiTest {
|
||||
Map<String,String> jieQi = new HashMap<String, String>(){
|
||||
private static final long serialVersionUID = 1L;
|
||||
{
|
||||
put("冬至","2021-12-21 23:59:18");
|
||||
put("小寒","2022-01-05 17:14:03");
|
||||
put("大寒","2022-01-20 10:39:05");
|
||||
put("立春","2022-02-04 04:50:45");
|
||||
put("雨水","2022-02-19 00:43:00");
|
||||
put("惊蛰","2022-03-05 22:43:43");
|
||||
put("春分","2022-03-20 23:33:24");
|
||||
put("清明","2022-04-05 03:20:13");
|
||||
put("谷雨","2022-04-20 10:24:16");
|
||||
put("立夏","2022-05-05 20:25:56");
|
||||
put("小满","2022-05-21 09:22:35");
|
||||
put("芒种","2022-06-06 00:25:47");
|
||||
put("夏至","2022-06-21 17:13:50");
|
||||
put("小暑","2022-07-07 10:37:59");
|
||||
put("大暑","2022-07-23 04:06:58");
|
||||
put("立秋","2022-08-07 20:29:07");
|
||||
put("处暑","2022-08-23 11:16:09");
|
||||
put("白露","2022-09-07 23:32:17");
|
||||
put("秋分","2022-09-23 09:03:41");
|
||||
put("寒露","2022-10-08 15:22:26");
|
||||
put("霜降","2022-10-23 18:35:41");
|
||||
put("立冬","2022-11-07 18:45:28");
|
||||
put("小雪","2022-11-22 16:20:28");
|
||||
put("大雪","2022-12-07 11:46:15");
|
||||
put("冬至","2021-12-21 23:59:09");
|
||||
put("小寒","2022-01-05 17:13:54");
|
||||
put("大寒","2022-01-20 10:38:56");
|
||||
put("立春","2022-02-04 04:50:36");
|
||||
put("雨水","2022-02-19 00:42:50");
|
||||
put("惊蛰","2022-03-05 22:43:34");
|
||||
put("春分","2022-03-20 23:33:15");
|
||||
put("清明","2022-04-05 03:20:03");
|
||||
put("谷雨","2022-04-20 10:24:07");
|
||||
put("立夏","2022-05-05 20:25:47");
|
||||
put("小满","2022-05-21 09:22:25");
|
||||
put("芒种","2022-06-06 00:25:38");
|
||||
put("夏至","2022-06-21 17:13:40");
|
||||
put("小暑","2022-07-07 10:37:49");
|
||||
put("大暑","2022-07-23 04:06:49");
|
||||
put("立秋","2022-08-07 20:28:57");
|
||||
put("处暑","2022-08-23 11:15:59");
|
||||
put("白露","2022-09-07 23:32:07");
|
||||
put("秋分","2022-09-23 09:03:31");
|
||||
put("寒露","2022-10-08 15:22:16");
|
||||
put("霜降","2022-10-23 18:35:31");
|
||||
put("立冬","2022-11-07 18:45:18");
|
||||
put("小雪","2022-11-22 16:20:18");
|
||||
put("大雪","2022-12-07 11:46:04");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -183,7 +183,7 @@ public class JieQiTest {
|
||||
@Test
|
||||
public void test8() {
|
||||
Lunar lunar = Lunar.fromYmd(2050, 12, 1);
|
||||
Assert.assertEquals("2050-12-07 06:41:13", lunar.getJieQiTable().get("DA_XUE").toYmdHms());
|
||||
Assert.assertEquals("2050-12-07 06:40:53", lunar.getJieQiTable().get("DA_XUE").toYmdHms());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -197,7 +197,13 @@ public class JieQiTest {
|
||||
@Test
|
||||
public void test10() {
|
||||
Lunar lunar = Solar.fromYmd(2023, 6, 1).getLunar();
|
||||
Assert.assertEquals("2022-12-22 05:48:11", lunar.getJieQiTable().get("冬至").toYmdHms());
|
||||
Assert.assertEquals("2022-12-22 05:48:01", lunar.getJieQiTable().get("冬至").toYmdHms());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test11() {
|
||||
Lunar lunar = Solar.fromYmd(2025, 3, 5).getLunar();
|
||||
Assert.assertEquals("2025-03-05 16:07:02", lunar.getJieQiTable().get("惊蛰").toYmdHms());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,8 +7,7 @@ import org.junit.Test;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.TimeZone;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 农历测试
|
||||
@@ -409,7 +408,7 @@ public class LunarTest {
|
||||
Lunar lunar = solar.getLunar();
|
||||
Assert.assertEquals("甲辰", lunar.getMonthInGanZhi());
|
||||
Assert.assertEquals("癸卯", lunar.getMonthInGanZhiExact());
|
||||
Assert.assertEquals(4, lunar.getDayJi().size());
|
||||
Assert.assertEquals("[出火, 入宅, 安葬, 伐木]", lunar.getDayJi().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -651,4 +650,32 @@ public class LunarTest {
|
||||
Assert.assertEquals("闭", lunar.getZhiXing());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test96() {
|
||||
Lunar lunar = Solar.fromYmd(2025, 2, 7).getLunar();
|
||||
Assert.assertEquals("[嫁娶, 祭祀, 祈福, 出行, 解除, 出火, 拆卸, 动土, 入宅, 移徙, 安床, 上梁, 栽种, 纳畜, 破土, 启钻, 安葬]", lunar.getDayYi().toString());
|
||||
Assert.assertEquals("[开市, 立券, 理发, 作灶]", lunar.getDayJi().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test97() {
|
||||
Lunar lunar = Solar.fromYmd(2025, 3, 5).getLunar();
|
||||
Assert.assertEquals("[破屋, 坏垣, 求医, 治病]", lunar.getDayYi().toString());
|
||||
Assert.assertEquals("[诸事不宜]", lunar.getDayJi().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test98() {
|
||||
Lunar lunar = Solar.fromYmd(2025, 5, 3).getLunar();
|
||||
Assert.assertEquals("[祭祀, 祈福, 求嗣, 斋醮, 沐浴, 纳畜, 入殓, 破土, 安葬]", lunar.getDayYi().toString());
|
||||
Assert.assertEquals("[移徙, 入宅, 嫁娶, 出行, 安床]", lunar.getDayJi().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test99() {
|
||||
Lunar lunar = Solar.fromYmd(2025, 5, 4).getLunar();
|
||||
Assert.assertEquals("[纳采, 祭祀, 祈福, 求嗣, 斋醮, 出行, 起基, 盖屋, 定磉, 安门, 入殓, 安葬]", lunar.getDayYi().toString());
|
||||
Assert.assertEquals("[嫁娶, 开市, 纳财, 出火]", lunar.getDayJi().toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ public class NineStarTest {
|
||||
@Test
|
||||
public void test8() {
|
||||
LunarMonth m = LunarMonth.fromYm(2022, 1);
|
||||
Assert.assertEquals("二黒土天璇", m.getNineStar().toString());
|
||||
Assert.assertEquals("二黑土天璇", m.getNineStar().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -77,4 +77,12 @@ public class NineStarTest {
|
||||
Assert.assertEquals("七赤金摇光", d.getTimeNineStar().toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test12() {
|
||||
LunarMonth m = LunarMonth.fromYm(2024, 11);
|
||||
Assert.assertEquals("四绿木天权", m.getNineStar().toString());
|
||||
m = LunarMonth.fromYm(2024, 12);
|
||||
Assert.assertEquals("三碧木天玑", m.getNineStar().toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user