6tail / lunar-java

日历、公历(阳历)、农历(阴历、老黄历)、佛历、道历,支持节假日、星座、儒略日、干支、生肖、节气、节日、彭祖百忌、每日宜忌、吉神宜趋凶煞宜忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道日及吉凶等。lunar is a calendar library for Solar and Chinese Lunar.

Home Page:http://6tail.cn/calendar/api.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

公历2022年12月7日(冬月十四)的每日宜忌和中华万年历等日历算出的结果不同

bigbiglemon opened this issue · comments

api => Lunar.getDayYi()
功能 => 每日宜忌
详情 => 公历2022年12月7日(冬月十四)的每日宜忌和中华万年历等多个日历算出的结果不同,其他日期是相同的(还在找规律)。

找到原因了:算法中月对应的天干地支下标计算错误
2022年12月07日, 大雪对应的时间是 2022-12-07 11:46:09。由于计算中使用对比时间精确到了十分秒,导致在11:46:09之前的计算会算作上一个天干地支月下标
···
start = null;
index = -3;
for (int i = 0; i < size; i += 2) {
end = jieQi.get(JIE_QI_IN_USE[i]);
String stime = null == start ? time : start.toYmdHms();
// 问题出在这个时间对比上
if (time.compareTo(stime) >= 0 && time.compareTo(end.toYmdHms()) < 0) {
break;
}
start = end;
index++;
}
···

已在项目中修改 ,希望作者抽空修复,非常感谢作者的开源

看到作者已经在最新版新增了两种模式,之前拉取的是19版的源码,打扰打扰~