diff --git a/CHANGELOG.md b/CHANGELOG.md index e8900fc..6f4537d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,3 +3,9 @@ ## [1.6.10] - 2024-02-06 1. 八字转阳历结果按时间先后排序,转换速度大幅提升。 + +## [1.6.11] - 2024-02-29 +1. 修复节气当天获取下一节气仍为当前节气的问题。 +2. 完善package.json中author信息。 +3. 修复每日宜忌存在重复项的问题。 +4. 修复八字转阳历存在遗漏的问题。 diff --git a/__tests__/JieQi.test.js b/__tests__/JieQi.test.js index 529fe88..7d6fd0c 100644 --- a/__tests__/JieQi.test.js +++ b/__tests__/JieQi.test.js @@ -108,3 +108,9 @@ test('test10', () => { const lunar = Lunar.fromYmd(2023, 6, 1); expect(lunar.getJieQiTable()['冬至'].toYmdHms()).toBe('2022-12-22 05:48:11'); }); + +test('test11', () => { + const lunar = Solar.fromYmd(2024, 2, 4).getLunar(); + expect(lunar.getPrevJie(true).getName()).toBe('立春'); + expect(lunar.getNextJie(true).getName()).toBe('惊蛰'); +}); diff --git a/lunar.js b/lunar.js index a55fd58..7684dcc 100644 --- a/lunar.js +++ b/lunar.js @@ -565,6 +565,10 @@ m *= 2; // 时辰地支转时刻,子时按零点算 var h = LunarUtil.index(timeGanZhi.substring(1), LunarUtil.ZHI, -1) * 2; + var hours = [h]; + if (0 === h && 2 === sect) { + hours = [0, 23]; + } var startYear = baseYear - 1; // 结束年 @@ -579,8 +583,6 @@ // 节令推移,年干支和月干支就都匹配上了 var solarTime = jieQiTable[jieQiList[4 + m]]; if (solarTime.getYear() >= baseYear) { - var mi = 0; - var s = 0; // 日干支和节令干支的偏移值 var lunar = solarTime.getLunar(); var dgz = (2 === sect) ? lunar.getDayInGanZhiExact2() : lunar.getDayInGanZhiExact(); @@ -591,17 +593,23 @@ if (d > 0) { // 从节令推移天数 solarTime = solarTime.next(d); - } else if (h === solarTime.getHour()) { - // 如果正好是节令当天,且小时和节令的小时数相等的极端情况,把分钟和秒钟带上 - mi = solarTime.getMinute(); - s = solarTime.getSecond(); } - // 验证一下 - var solar = Solar.fromYmdHms(solarTime.getYear(), solarTime.getMonth(), solarTime.getDay(), h, mi, s); - lunar = solar.getLunar(); - dgz = (2 === sect) ? lunar.getDayInGanZhiExact2() : lunar.getDayInGanZhiExact(); - if (lunar.getYearInGanZhiExact() === yearGanZhi && lunar.getMonthInGanZhiExact() === monthGanZhi && dgz === dayGanZhi && lunar.getTimeInGanZhi() === timeGanZhi) { - l.push(solar); + for (var i = 0, j = hours.length; i < j; i++) { + var hour = hours[i]; + var mi = 0; + var s = 0; + if (d === 0 && hour === solarTime.getHour()) { + // 如果正好是节令当天,且小时和节令的小时数相等的极端情况,把分钟和秒钟带上 + mi = solarTime.getMinute(); + s = solarTime.getSecond(); + } + // 验证一下 + var 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() === yearGanZhi && lunar.getMonthInGanZhiExact() === monthGanZhi && dgz === dayGanZhi && lunar.getTimeInGanZhi() === timeGanZhi) { + l.push(solar); + } } } } @@ -1671,7 +1679,7 @@ var solar = this._getJieQiSolar(key); var day = solar[wholeDay ? 'toYmd' : 'toYmdHms'](); if(forward){ - if(day (https://6tail.cn)", "license": "MIT", "bugs": { "url": "https://github.com/6tail/lunar-javascript/issues"