6tail / lunar-java

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

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

Closed bigbiglemon closed 1 year ago

bigbiglemon commented 1 year ago

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

bigbiglemon commented 1 year ago

找到原因了:算法中月对应的天干地支下标计算错误 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++; } ···

bigbiglemon commented 1 year ago

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

bigbiglemon commented 1 year ago

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