From b7f5c53b3ea02ad2fcbaa1d2b4e5c498ebbc7150 Mon Sep 17 00:00:00 2001 From: 6tail <6tail@6tail.cn> Date: Sat, 16 Jan 2021 20:29:43 +0800 Subject: [PATCH] =?UTF-8?q?v1.0.36=20=E6=9B=B4=E6=96=B0=E5=86=9C=E5=8E=86?= =?UTF-8?q?=E7=BA=AA=E5=BF=B5=E6=97=A5=EF=BC=9B=E6=96=B0=E5=A2=9E=E5=85=AD?= =?UTF-8?q?=E6=9B=9C=E3=80=81=E7=89=A9=E5=80=99=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 7 +++++-- lunar.js | 36 +++++++++++++++++++++++++++++------- package.json | 2 +- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/index.js b/index.js index 5d35340..ee0cf19 100644 --- a/index.js +++ b/index.js @@ -1,13 +1,16 @@ -const {Solar, Lunar, SolarWeek, SolarMonth, SolarSeason, SolarHalfYear, SolarUtil, LunarUtil, HolidayUtil} = require('./lunar.js') +const {Solar, Lunar, NineStar, EightChar, SolarWeek, SolarMonth, SolarSeason, SolarHalfYear, SolarYear, SolarUtil, LunarUtil, HolidayUtil} = require('./lunar.js') module.exports = { Solar: Solar, Lunar: Lunar, + NineStar: NineStar, + EightChar: EightChar, SolarWeek: SolarWeek, SolarMonth: SolarMonth, SolarSeason: SolarSeason, SolarHalfYear: SolarHalfYear, + SolarYear: SolarYear, SolarUtil: SolarUtil, LunarUtil: LunarUtil, HolidayUtil: HolidayUtil -} \ No newline at end of file +} diff --git a/lunar.js b/lunar.js index da00924..8c7350c 100644 --- a/lunar.js +++ b/lunar.js @@ -303,7 +303,8 @@ }; })(); var Lunar = (function(){ - var SECOND_PER_RAD = 180 * 3600 / Math.PI; + var MS_PER_DAY = 86400000; + var SECOND_PER_RAD = 648000 / Math.PI; var JIE_QI = ['冬至','小寒','大寒','立春','雨水','惊蛰','春分','清明','谷雨','立夏','小满','芒种','夏至','小暑','大暑','立秋','处暑','白露','秋分','寒露','霜降','立冬','小雪','大雪']; var NUT_B = [2.1824, -33.75705, 36e-6, -1720, 920, 3.5069, 1256.66393, 11e-6, -132, 57, 1.3375, 16799.4182, -51e-6, -23, 10, 4.3649, -67.5141, 72e-6, 21, -9, 0.04, -628.302, 0, -14, 0, 2.36, 8328.691, 0, 7, 0, 3.46, 1884.966, 0, -5, 2, 5.44, 16833.175, 0, -4, 2, 3.69, 25128.110, 0, -3, 0, 3.55, 628.362, 0, 2, 0]; var DT_AT = [-4000, 108371.7, -13036.80, 392.000, 0.0000, -500, 17201.0, -627.82, 16.170, -0.3413, -150, 12200.6, -346.41, 5.403, -0.1593, 150, 9113.8, -328.13, -1.647, 0.0377, 500, 5707.5, -391.41, 0.915, 0.3145, 900, 2203.4, -283.45, 13.034, -0.1778, 1300, 490.1, -57.35, 2.085, -0.0072, 1600, 120.0, -9.81, -1.532, 0.1403, 1700, 10.2, -0.91, 0.510, -0.0370, 1800, 13.4, -0.72, 0.202, -0.0193, 1830, 7.8, -1.81, 0.416, -0.0247, 1860, 8.3, -0.13, -0.406, 0.0292, 1880, -5.4, 0.32, -0.183, 0.0173, 1900, -2.3, 2.06, 0.169, -0.0135, 1920, 21.2, 1.69, -0.304, 0.0167, 1940, 24.2, 1.22, -0.064, 0.0031, 1960, 33.2, 0.51, 0.231, -0.0109, 1980, 51.0, 1.29, -0.026, 0.0032, 2000, 63.87, 0.1, 0, 0, 2005, 64.7, 0.4, 0, 0, 2015, 69]; @@ -1614,7 +1615,7 @@ if (currentCalendar < startCalendar || currentCalendar >= endCalendar) { return null; } - var days = Math.floor((currentCalendar.getTime() - startCalendar.getTime()) / (1000 * 60 * 60 * 24)); + var days = Math.floor((currentCalendar.getTime() - startCalendar.getTime()) / MS_PER_DAY); return this._buildNameAndIndex(LunarUtil.NUMBER[Math.floor(days / 9) + 1] + '九', days % 9 + 1); }, getFu:function(){ @@ -1637,7 +1638,7 @@ return null; } - var days = Math.floor((currentCalendar.getTime() - startCalendar.getTime()) / (1000 * 60 * 60 * 24)); + var days = Math.floor((currentCalendar.getTime() - startCalendar.getTime()) / MS_PER_DAY); if (days < 10) { return this._buildNameAndIndex('初伏', days + 1); } @@ -1645,7 +1646,7 @@ // 第4个庚日,中伏第1天 startCalendar.setDate(startCalendar.getDate() + 10); - days = Math.floor((currentCalendar.getTime() - startCalendar.getTime()) / (1000 * 60 * 60 * 24)); + days = Math.floor((currentCalendar.getTime() - startCalendar.getTime()) / MS_PER_DAY); if (days < 10) { return this._buildNameAndIndex('中伏', days + 1); } @@ -1655,7 +1656,7 @@ var liQiuCalendar = new Date(liQiu.getYear() + '/' + liQiu.getMonth() + '/' + liQiu.getDay() + ' 0:0:0'); - days = Math.floor((currentCalendar.getTime() - startCalendar.getTime()) / (1000 * 60 * 60 * 24)); + days = Math.floor((currentCalendar.getTime() - startCalendar.getTime()) / MS_PER_DAY); // 末伏 if (liQiuCalendar <= startCalendar) { if (days < 10) { @@ -1668,12 +1669,31 @@ } // 末伏第1天 startCalendar.setDate(startCalendar.getDate() + 10); - days = Math.floor((currentCalendar.getTime() - startCalendar.getTime()) / (1000 * 60 * 60 * 24)); + days = Math.floor((currentCalendar.getTime() - startCalendar.getTime()) / MS_PER_DAY); if (days < 10) { return this._buildNameAndIndex('末伏', days + 1); } } return null; + }, + getLiuYao:function(){ + return LunarUtil.LIU_YAO[(Math.abs(this._p.month)+this._p.day-2)%6]; + }, + getWuHou:function(){ + var jieQi = this.getPrevJieQi(); + var name = jieQi.getName(); + var offset = 0; + for(var i=0,j=JIE_QI.length;i