Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a4d172ef6 |
@@ -3,3 +3,8 @@
|
|||||||
|
|
||||||
## [1.3.12] - 2024-02-06
|
## [1.3.12] - 2024-02-06
|
||||||
1. 八字转阳历结果按时间先后排序,转换速度大幅提升。
|
1. 八字转阳历结果按时间先后排序,转换速度大幅提升。
|
||||||
|
|
||||||
|
## [1.3.13] - 2024-02-29
|
||||||
|
1. 修复节气当天获取下一节气仍为当前节气的问题。
|
||||||
|
2. 修复每日宜忌存在重复项的问题。
|
||||||
|
3. 修复八字转阳历存在遗漏的问题。
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.6tail</groupId>
|
<groupId>cn.6tail</groupId>
|
||||||
<artifactId>lunar</artifactId>
|
<artifactId>lunar</artifactId>
|
||||||
<version>1.3.12</version>
|
<version>1.3.13</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ lunar is a calendar library for Solar and Chinese Lunar.
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>cn.6tail</groupId>
|
<groupId>cn.6tail</groupId>
|
||||||
<artifactId>lunar</artifactId>
|
<artifactId>lunar</artifactId>
|
||||||
<version>1.3.12</version>
|
<version>1.3.13</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@@ -7,7 +7,7 @@
|
|||||||
<groupId>cn.6tail</groupId>
|
<groupId>cn.6tail</groupId>
|
||||||
<artifactId>lunar</artifactId>
|
<artifactId>lunar</artifactId>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<version>1.3.12</version>
|
<version>1.3.13</version>
|
||||||
<name>${project.groupId}:${project.artifactId}</name>
|
<name>${project.groupId}:${project.artifactId}</name>
|
||||||
<url>https://github.com/6tail/lunar-java</url>
|
<url>https://github.com/6tail/lunar-java</url>
|
||||||
<description>a calendar library for Solar and Chinese Lunar</description>
|
<description>a calendar library for Solar and Chinese Lunar</description>
|
||||||
|
|||||||
@@ -2380,7 +2380,7 @@ public class Lunar {
|
|||||||
Solar solar = entry.getValue();
|
Solar solar = entry.getValue();
|
||||||
String day = wholeDay ? solar.toYmd() : solar.toYmdHms();
|
String day = wholeDay ? solar.toYmd() : solar.toYmdHms();
|
||||||
if (forward) {
|
if (forward) {
|
||||||
if (day.compareTo(today) < 0) {
|
if (day.compareTo(today) <= 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (null == near) {
|
if (null == near) {
|
||||||
|
|||||||
@@ -302,7 +302,7 @@ public class Solar {
|
|||||||
m += 12;
|
m += 12;
|
||||||
}
|
}
|
||||||
// 月天干要一致
|
// 月天干要一致
|
||||||
if (((LunarUtil.find(yearGanZhi.substring(0, 1), LunarUtil.GAN, -1) + 1) * 2 + m) % 10 != LunarUtil.find(monthGanZhi.substring(0,1), LunarUtil.GAN, -1)) {
|
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;
|
return l;
|
||||||
}
|
}
|
||||||
// 1年的立春是辛酉,序号57
|
// 1年的立春是辛酉,序号57
|
||||||
@@ -315,6 +315,10 @@ public class Solar {
|
|||||||
m *= 2;
|
m *= 2;
|
||||||
// 时辰地支转时刻,子时按零点算
|
// 时辰地支转时刻,子时按零点算
|
||||||
int h = LunarUtil.find(timeGanZhi.substring(1), LunarUtil.ZHI, -1) * 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};
|
||||||
|
}
|
||||||
int startYear = baseYear - 1;
|
int startYear = baseYear - 1;
|
||||||
|
|
||||||
// 结束年
|
// 结束年
|
||||||
@@ -330,8 +334,6 @@ public class Solar {
|
|||||||
// 节令推移,年干支和月干支就都匹配上了
|
// 节令推移,年干支和月干支就都匹配上了
|
||||||
Solar solarTime = jieQiList.get(4 + m);
|
Solar solarTime = jieQiList.get(4 + m);
|
||||||
if (solarTime.getYear() >= baseYear) {
|
if (solarTime.getYear() >= baseYear) {
|
||||||
int mi = 0;
|
|
||||||
int s = 0;
|
|
||||||
// 日干支和节令干支的偏移值
|
// 日干支和节令干支的偏移值
|
||||||
Lunar lunar = solarTime.getLunar();
|
Lunar lunar = solarTime.getLunar();
|
||||||
String dgz = (2 == sect) ? lunar.getDayInGanZhiExact2() : lunar.getDayInGanZhiExact();
|
String dgz = (2 == sect) ? lunar.getDayInGanZhiExact2() : lunar.getDayInGanZhiExact();
|
||||||
@@ -342,17 +344,22 @@ public class Solar {
|
|||||||
if (d > 0) {
|
if (d > 0) {
|
||||||
// 从节令推移天数
|
// 从节令推移天数
|
||||||
solarTime = solarTime.next(d);
|
solarTime = solarTime.next(d);
|
||||||
} else if (h == solarTime.getHour()) {
|
|
||||||
// 如果正好是节令当天,且小时和节令的小时数相等的极端情况,把分钟和秒钟带上
|
|
||||||
mi = solarTime.getMinute();
|
|
||||||
s = solarTime.getSecond();
|
|
||||||
}
|
}
|
||||||
// 验证一下
|
for (int hour : hours) {
|
||||||
Solar solar = Solar.fromYmdHms(solarTime.getYear(), solarTime.getMonth(), solarTime.getDay(), h, mi, s);
|
int mi = 0;
|
||||||
lunar = solar.getLunar();
|
int s = 0;
|
||||||
dgz = (2 == sect) ? lunar.getDayInGanZhiExact2() : lunar.getDayInGanZhiExact();
|
if (d == 0 && hour == solarTime.getHour()) {
|
||||||
if (lunar.getYearInGanZhiExact().equals(yearGanZhi) && lunar.getMonthInGanZhiExact().equals(monthGanZhi) && dgz.equals(dayGanZhi) && lunar.getTimeInGanZhi().equals(timeGanZhi)) {
|
// 如果正好是节令当天,且小时和节令的小时数相等的极端情况,把分钟和秒钟带上
|
||||||
l.add(solar);
|
mi = solarTime.getMinute();
|
||||||
|
s = solarTime.getSecond();
|
||||||
|
}
|
||||||
|
// 验证一下
|
||||||
|
Solar solar = Solar.fromYmdHms(solarTime.getYear(), solarTime.getMonth(), solarTime.getDay(), hour, mi, s);
|
||||||
|
lunar = solar.getLunar();
|
||||||
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -376,7 +383,7 @@ public class Solar {
|
|||||||
* @return 0123456
|
* @return 0123456
|
||||||
*/
|
*/
|
||||||
public int getWeek() {
|
public int getWeek() {
|
||||||
return ((int)(getJulianDay() + 0.5) + 7000001) % 7;
|
return ((int) (getJulianDay() + 0.5) + 7000001) % 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -601,6 +608,7 @@ public class Solar {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 阳历日期相减,获得相差天数
|
* 阳历日期相减,获得相差天数
|
||||||
|
*
|
||||||
* @param solar 阳历
|
* @param solar 阳历
|
||||||
* @return 天数
|
* @return 天数
|
||||||
*/
|
*/
|
||||||
@@ -610,6 +618,7 @@ public class Solar {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 阳历日期相减,获得相差分钟数
|
* 阳历日期相减,获得相差分钟数
|
||||||
|
*
|
||||||
* @param solar 阳历
|
* @param solar 阳历
|
||||||
* @return 分钟数
|
* @return 分钟数
|
||||||
*/
|
*/
|
||||||
@@ -628,6 +637,7 @@ public class Solar {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否在指定日期之后
|
* 是否在指定日期之后
|
||||||
|
*
|
||||||
* @param solar 阳历
|
* @param solar 阳历
|
||||||
* @return true/false
|
* @return true/false
|
||||||
*/
|
*/
|
||||||
@@ -667,6 +677,7 @@ public class Solar {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否在指定日期之前
|
* 是否在指定日期之前
|
||||||
|
*
|
||||||
* @param solar 阳历
|
* @param solar 阳历
|
||||||
* @return true/false
|
* @return true/false
|
||||||
*/
|
*/
|
||||||
@@ -706,6 +717,7 @@ public class Solar {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 年推移
|
* 年推移
|
||||||
|
*
|
||||||
* @param years 年数
|
* @param years 年数
|
||||||
* @return 阳历
|
* @return 阳历
|
||||||
*/
|
*/
|
||||||
@@ -729,6 +741,7 @@ public class Solar {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 月推移
|
* 月推移
|
||||||
|
*
|
||||||
* @param months 月数
|
* @param months 月数
|
||||||
* @return 阳历
|
* @return 阳历
|
||||||
*/
|
*/
|
||||||
@@ -789,7 +802,7 @@ public class Solar {
|
|||||||
d += days;
|
d += days;
|
||||||
}
|
}
|
||||||
if (1582 == y && 10 == m) {
|
if (1582 == y && 10 == m) {
|
||||||
if (d > 4 ) {
|
if (d > 4) {
|
||||||
d += 10;
|
d += 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -804,7 +817,7 @@ public class Solar {
|
|||||||
* @return 阳历日期
|
* @return 阳历日期
|
||||||
*/
|
*/
|
||||||
public Solar next(int days, boolean onlyWorkday) {
|
public Solar next(int days, boolean onlyWorkday) {
|
||||||
if(!onlyWorkday) {
|
if (!onlyWorkday) {
|
||||||
return next(days);
|
return next(days);
|
||||||
}
|
}
|
||||||
Solar solar = fromYmdHms(year, month, day, hour, minute, second);
|
Solar solar = fromYmdHms(year, month, day, hour, minute, second);
|
||||||
@@ -833,6 +846,7 @@ public class Solar {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 小时推移
|
* 小时推移
|
||||||
|
*
|
||||||
* @param hours 小时数
|
* @param hours 小时数
|
||||||
* @return 阳历
|
* @return 阳历
|
||||||
*/
|
*/
|
||||||
@@ -852,6 +866,7 @@ public class Solar {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取薪资比例(感谢 https://gitee.com/smr1987)
|
* 获取薪资比例(感谢 https://gitee.com/smr1987)
|
||||||
|
*
|
||||||
* @return 薪资比例:1/2/3
|
* @return 薪资比例:1/2/3
|
||||||
*/
|
*/
|
||||||
public int getSalaryRate() {
|
public int getSalaryRate() {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -3,6 +3,7 @@ package test;
|
|||||||
import com.nlf.calendar.EightChar;
|
import com.nlf.calendar.EightChar;
|
||||||
import com.nlf.calendar.Lunar;
|
import com.nlf.calendar.Lunar;
|
||||||
import com.nlf.calendar.Solar;
|
import com.nlf.calendar.Solar;
|
||||||
|
import com.nlf.calendar.eightchar.Yun;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@@ -493,4 +494,40 @@ public class BaZiTest {
|
|||||||
Assert.assertEquals("身宫", "乙巳", eightChar.getShenGong());
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user