From 44a2b408cfe8cc2d48e57bc332d5a17091c8e2e7 Mon Sep 17 00:00:00 2001 From: 6tail <6tail@6tail.cn> Date: Wed, 16 Feb 2022 20:02:38 +0800 Subject: [PATCH] =?UTF-8?q?v1.2.27=20=E6=96=B0=E5=A2=9E=E9=98=B4=E5=8E=86?= =?UTF-8?q?=E5=B9=B4=E3=80=81=E9=98=B4=E5=8E=86=E6=9C=88=E7=9A=84=E6=8E=A8?= =?UTF-8?q?=E7=A7=BB=EF=BC=9B=E4=BF=AE=E5=A4=8D=E4=B8=89=E5=80=99=E9=94=99?= =?UTF-8?q?=E8=AF=AF=EF=BC=9B=E4=BF=AE=E5=A4=8D=E9=81=93=E5=8E=86=E8=8A=82?= =?UTF-8?q?=E6=97=A5=E9=94=99=E5=88=AB=E5=AD=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __tests__/WuHou.test.js | 6 ++++ lunar.js | 79 +++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 3 files changed, 80 insertions(+), 7 deletions(-) diff --git a/__tests__/WuHou.test.js b/__tests__/WuHou.test.js index 6b794b0..3bcd0e2 100644 --- a/__tests__/WuHou.test.js +++ b/__tests__/WuHou.test.js @@ -77,3 +77,9 @@ test('test13', () => { const lunar = solar.getLunar(); expect(lunar.getHou()).toBe('小寒 初候'); }); + +test('test14', () => { + const solar = Solar.fromYmd(2022,5,20); + const lunar = solar.getLunar(); + expect(lunar.getHou()).toBe('立夏 三候'); +}); diff --git a/lunar.js b/lunar.js index 911b80e..0453406 100644 --- a/lunar.js +++ b/lunar.js @@ -1660,8 +1660,13 @@ var jieQi = this.getPrevJieQi(true); var name = jieQi.getName(); var startSolar = jieQi.getSolar(); - var days = days = ExactDate.getDaysBetweenYmd(startSolar.getYear(),startSolar.getMonth(),startSolar.getDay(), this._p.solar.getYear(),this._p.solar.getMonth(),this._p.solar.getDay()); - return name + ' ' + LunarUtil.HOU[(Math.floor(days/5)) % LunarUtil.HOU.length]; + var days = ExactDate.getDaysBetweenYmd(startSolar.getYear(),startSolar.getMonth(),startSolar.getDay(), this._p.solar.getYear(),this._p.solar.getMonth(),this._p.solar.getDay()); + var max = LunarUtil.HOU.length - 1; + var offset = Math.floor(days / 5); + if (offset > max) { + offset = max; + } + return name + ' ' + LunarUtil.HOU[offset]; }, getDayLu:function(){ var gan = LunarUtil.LU[this.getDayGan()]; @@ -2266,6 +2271,9 @@ toFullString:function(){ return this.getYear()+'年'; }, + next:function(n){ + return LunarYear.fromYear(this._p.year + n); + }, _compute:function(){ this._p.months = []; this._p.jieQiJulianDays = []; @@ -2420,6 +2428,65 @@ var offset = (n - monthZhiIndex) % 9; return NineStar.fromIndex(offset); }, + next:function(n){ + if (0 == n) { + return LunarMonth.fromYm(this._p.year, this._p.month); + } else { + var rest = Math.abs(n); + var ny = this._p.year; + var iy = ny; + var im = this._p.month; + var index = 0; + var months = LunarYear.fromYear(ny).getMonths(); + var i; + var m; + var size; + if (n > 0) { + while (true) { + size = months.length; + for (i = 0; i < size; i++) { + m = months[i]; + if (m.getYear() === iy && m.getMonth() === im) { + index = i; + break; + } + } + var more = size - index - 1; + if (rest < more) { + break; + } + rest -= more; + var lastMonth = months[size - 1]; + iy = lastMonth.getYear(); + im = lastMonth.getMonth(); + ny++; + months = LunarYear.fromYear(ny).getMonths(); + } + return months[index + rest]; + } else { + while (true) { + size = months.length; + for (i = 0; i < size; i++) { + m = months[i]; + if (m.getYear() === iy && m.getMonth() === im) { + index = i; + break; + } + } + if (rest <= index) { + break; + } + rest -= index; + var firstMonth = months[0]; + iy = firstMonth.getYear(); + im = firstMonth.getMonth(); + ny--; + months = LunarYear.fromYear(ny).getMonths(); + } + return months[index - rest]; + } + } + }, toString:function(){return this.getYear()+'年'+(this.isLeap()?'闰':'')+LunarUtil.MONTH[Math.abs(this.getMonth())]+'月('+this.getDayCount()+')天';} }; }; @@ -4247,7 +4314,7 @@ '冬至':'北方玄上玉宸天尊同黑帝五炁天君下降' }, FESTIVAL: { - '1-1': [_f('天腊之辰', '天腊,此日五帝会于束方九炁青天')], + '1-1': [_f('天腊之辰', '天腊,此日五帝会于东方九炁青天')], '1-3': [_f('郝真人圣诞'), _f('孙真人圣诞')], '1-5': [_f('孙祖清静元君诞')], '1-7': [_f('举迁赏会', '此日上元赐福,天官同地水二官考校罪福')], @@ -4282,7 +4349,7 @@ '4-20': [_f('眼光圣母娘娘诞')], '4-28': [_f('神农先帝诞')], '5-1': [_f('南极长生大帝圣诞')], - '5-5': [_f('地腊之辰', '地腊,此日五帝会於南方三炁丹天'), _f('南方雷祖圣诞'), _f('地祗温元帅圣诞'), _f('雷霆邓天君圣诞')], + '5-5': [_f('地腊之辰', '地腊,此日五帝会于南方三炁丹天'), _f('南方雷祖圣诞'), _f('地祗温元帅圣诞'), _f('雷霆邓天君圣诞')], '5-11': [_f('城隍爷圣诞')], '5-13': [_f('关圣帝君降神'), _f('关平太子圣诞')], '5-18': [_f('张天师圣诞')], @@ -4324,7 +4391,7 @@ '9-22': [_f('增福财神诞')], '9-23': [_f('萨翁真君圣诞')], '9-28': [_f('五显灵官马元帅圣诞')], - '10-1': [_f('民岁腊之辰', '民岁腊,此日五帝会於北方五炁黑天'), _f('东皇大帝圣诞')], + '10-1': [_f('民岁腊之辰', '民岁腊,此日五帝会于北方五炁黑天'), _f('东皇大帝圣诞')], '10-3': [_f('三茅应化真君圣诞')], '10-6': [_f('天曹诸司五岳五帝圣诞')], '10-15': [_f('下元水官大帝圣诞'), _f('建生大会', '此日下元解厄,水官同天地二官考校罪福')], @@ -4335,7 +4402,7 @@ '11-9': [_f('湘子韩祖圣诞')], '11-11': [_f('太乙救苦天尊圣诞')], '11-26': [_f('北方五道圣诞')], - '12-8': [_f('王侯腊之辰', '王侯腊,此日五帝会於上方玄都玉京')], + '12-8': [_f('王侯腊之辰', '王侯腊,此日五帝会于上方玄都玉京')], '12-16': [_f('南岳大帝圣诞'), _f('福德正神诞')], '12-20': [_f('鲁班先师圣诞')], '12-21': [_f('天猷上帝圣诞')], diff --git a/package.json b/package.json index fb1e76f..4431a86 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lunar-javascript", - "version": "1.2.26", + "version": "1.2.27", "description": "lunar is a calendar library for Solar and Chinese Lunar.", "main": "index.js", "scripts": {