From c142ad7f6cd345934756c38f3baec774720a651f Mon Sep 17 00:00:00 2001 From: 6tail <6tail@6tail.cn> Date: Sun, 2 Jan 2022 17:31:31 +0800 Subject: [PATCH] =?UTF-8?q?v1.2.21=20=E4=BF=AE=E5=A4=8D=E5=85=AB=E5=AD=97?= =?UTF-8?q?=E8=BD=AC=E9=98=B3=E5=8E=86=E7=9A=84=E9=94=99=E8=AF=AF=EF=BC=9B?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lunar.js | 38 +++++++++++++++++--------------------- package.json | 2 +- 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/lunar.js b/lunar.js index c733f57..144e35e 100644 --- a/lunar.js +++ b/lunar.js @@ -27,13 +27,7 @@ fromYmdHms:function(y,m,d,hour,minute,second){ return this._(new Date(y+'/'+m+'/'+d+' '+hour+':'+minute+':'+second),y,m,d); }, - getDaysBetween:function(date0, date1){ - var ay = date0.getFullYear(); - var by = date1.getFullYear(); - var am = date0.getMonth() + 1; - var bm = date1.getMonth() + 1; - var ad = date0.getDate(); - var bd = date1.getDate(); + getDaysBetweenYmd:function(ay, am, ad, by, bm, bd){ var n; var days; var i; @@ -55,6 +49,9 @@ n = days; } return n; + }, + getDaysBetween:function(date0, date1){ + return this.getDaysBetweenYmd(date0.getFullYear(), date0.getMonth() + 1, date0.getDate(), date1.getFullYear(), date1.getMonth() + 1, date1.getDate()); } }; })(); @@ -527,22 +524,19 @@ return o; }; var _fromDate = function(date){ - var c = ExactDate.fromYmd(date.getFullYear(),date.getMonth()+1,date.getDate()); + var currentYear = date.getFullYear(); + var currentMonth = date.getMonth() + 1; + var currentDay = date.getDate(); var lunarYear = 0; var lunarMonth = 0; var lunarDay = 0; - var y = c.getFullYear(); - var ly = LunarYear.fromYear(y); + var ly = LunarYear.fromYear(currentYear); var lms = ly.getMonths(); for (var i = 0, j = lms.length; i < j; i++) { var m = lms[i]; // 初一 - var firstDay = Solar.fromJulianDay(m.getFirstJulianDay()).getCalendar(); - firstDay.setHours(0); - firstDay.setMinutes(0); - firstDay.setSeconds(0); - firstDay.setMilliseconds(0); - var days = ExactDate.getDaysBetween(firstDay, c); + var firstDay = Solar.fromJulianDay(m.getFirstJulianDay()); + var days = ExactDate.getDaysBetweenYmd(firstDay.getYear(), firstDay.getMonth(), firstDay.getDay(), currentYear, currentMonth, currentDay); if (days < m.getDayCount()) { lunarYear = m.getYear(); lunarMonth = m.getMonth(); @@ -1159,9 +1153,9 @@ var dongZhiIndex = LunarUtil.getJiaZiIndex(dongZhi.getLunar().getDayInGanZhi()); var dongZhiIndex2 = LunarUtil.getJiaZiIndex(dongZhi2.getLunar().getDayInGanZhi()); var xiaZhiIndex = LunarUtil.getJiaZiIndex(xiaZhi.getLunar().getDayInGanZhi()); - var solarShunBai = null; - var solarShunBai2 = null; - var solarNiZi = null; + var solarShunBai; + var solarShunBai2; + var solarNiZi; if (dongZhiIndex>29) { solarShunBai = dongZhi.next(60 - dongZhiIndex); } else { @@ -1206,8 +1200,7 @@ start = asc ? 3 : 5; } var index = asc ? start + this._p.timeZhiIndex : start + 9 - this._p.timeZhiIndex; - var offset = index % 9; - return NineStar.fromIndex(offset); + return NineStar.fromIndex(index % 9); }, getSolar:function(){ return this._p.solar; @@ -2577,6 +2570,9 @@ days += this.getDaysOfMonth(year, i); } days += day; + if (1582 === year && 10 === month && day >= 15) { + days -= 10; + } return days; }, getWeeksOfMonth:function(year,month,start){ diff --git a/package.json b/package.json index 1742e4c..714265c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lunar-javascript", - "version": "1.2.20", + "version": "1.2.21", "description": "lunar is a calendar library for Solar and Chinese Lunar.", "main": "index.js", "scripts": {