1
0
mirror of synced 2026-04-17 05:48:41 +08:00

Compare commits

..

8 Commits

Author SHA1 Message Date
6tail
26557902f6 v1.2.26 修复SolarWeek获取当月第几周的错误。 2022-01-10 20:40:20 +08:00
6tail
1e7f33e048 v1.2.25 修复获取当前节气对象的阳历无时分秒的问题。 2022-01-08 16:42:06 +08:00
6tail
988d3f60a7 v1.2.24 修复获取当前节气对象报错的问题。 2022-01-08 10:19:13 +08:00
6tail
9bfb4ea312 v1.2.23 优化算法。 2022-01-07 20:31:14 +08:00
6tail
004899148d v1.2.22 修复九星错误;修复太岁方位错误。 2022-01-06 19:58:02 +08:00
6tail
c142ad7f6c v1.2.21 修复八字转阳历的错误;优化代码。 2022-01-02 17:31:31 +08:00
6tail
8d131aa31a Merge pull request #4 from Weidge/master
bug修复:反推八字Solar_fromBaZi函数,在阳历元旦后、农历新年前,反推失败的bug
2022-01-01 22:53:01 +08:00
Weidge
34469699a5 bug修复:反推八字Solar_fromBaZi函数,在阳历元旦后、农历新年前,反推失败的bug 2022-01-01 15:17:30 +08:00
4 changed files with 238 additions and 105 deletions

View File

@@ -415,12 +415,12 @@ test('test022', () => {
test('test023', () => { test('test023', () => {
const lunar = Lunar.fromYmd(2022, 1, 1); const lunar = Lunar.fromYmd(2022, 1, 1);
expect(lunar.getYearNineStar().toString()).toBe('五黄土玉衡'); expect(lunar.getYearNineStar().toString()).toBe('六白金开阳');
}); });
test('test024', () => { test('test024', () => {
const lunar = Lunar.fromYmd(2033, 1, 1); const lunar = Lunar.fromYmd(2033, 1, 1);
expect(lunar.getYearNineStar().toString()).toBe('三碧木天'); expect(lunar.getYearNineStar().toString()).toBe('四绿木天');
}); });
test('test025', () => { test('test025', () => {

View File

@@ -19,3 +19,15 @@ test('testFromSunday', () => {
expect(week.getFirstDay().toString()).toBe('2019-04-28'); expect(week.getFirstDay().toString()).toBe('2019-04-28');
expect(week.getFirstDayInMonth().toString()).toBe('2019-05-01'); expect(week.getFirstDayInMonth().toString()).toBe('2019-05-01');
}); });
test('test1', () => {
const start = 0;
const week = SolarWeek.fromYmd(2022, 5, 1, start);
expect(week.getIndex()).toBe(1);
});
test('test2', () => {
const start = 2;
const week = SolarWeek.fromYmd(2021, 5, 4, start);
expect(week.getIndex()).toBe(2);
});

325
lunar.js
View File

@@ -27,13 +27,7 @@
fromYmdHms:function(y,m,d,hour,minute,second){ fromYmdHms:function(y,m,d,hour,minute,second){
return this._(new Date(y+'/'+m+'/'+d+' '+hour+':'+minute+':'+second),y,m,d); return this._(new Date(y+'/'+m+'/'+d+' '+hour+':'+minute+':'+second),y,m,d);
}, },
getDaysBetween:function(date0, date1){ getDaysBetweenYmd:function(ay, am, ad, by, bm, bd){
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();
var n; var n;
var days; var days;
var i; var i;
@@ -55,6 +49,9 @@
n = days; n = days;
} }
return n; return n;
},
getDaysBetween:function(date0, date1){
return this.getDaysBetweenYmd(date0.getFullYear(), date0.getMonth() + 1, date0.getDate(), date1.getFullYear(), date1.getMonth() + 1, date1.getDate());
} }
}; };
})(); })();
@@ -304,7 +301,7 @@
if(offsetYear<0){ if(offsetYear<0){
offsetYear = offsetYear+60; offsetYear = offsetYear+60;
} }
var startYear = today.getYear() - offsetYear; var startYear = lunar.getYear() - offsetYear;
var hour = 0; var hour = 0;
var timeZhi = timeGanZhi.substr(1); var timeZhi = timeGanZhi.substr(1);
for(var i=0,j=LunarUtil.ZHI.length;i<j;i++){ for(var i=0,j=LunarUtil.ZHI.length;i<j;i++){
@@ -366,7 +363,7 @@
fromYmdHms:function(y,m,d,hour,minute,second){return _fromYmdHms(y,m,d,hour,minute,second);}, fromYmdHms:function(y,m,d,hour,minute,second){return _fromYmdHms(y,m,d,hour,minute,second);},
fromDate:function(date){return _fromDate(date);}, fromDate:function(date){return _fromDate(date);},
fromJulianDay:function(julianDay){return _fromJulianDay(julianDay);}, fromJulianDay:function(julianDay){return _fromJulianDay(julianDay);},
fromBaZi:function(yearGanZhi,monthGanZhi,dayGanZhi,timeGanZhi){return _fromBaZi(yearGanZhi,monthGanZhi,dayGanZhi,timeGanZhi);} fromBaZi:function(yearGanZhi,monthGanZhi,dayGanZhi,timeGanZhi,sect,baseYear){return _fromBaZi(yearGanZhi,monthGanZhi,dayGanZhi,timeGanZhi,sect,baseYear);}
}; };
})(); })();
var Lunar = (function(){ var Lunar = (function(){
@@ -527,22 +524,19 @@
return o; return o;
}; };
var _fromDate = function(date){ 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 lunarYear = 0;
var lunarMonth = 0; var lunarMonth = 0;
var lunarDay = 0; var lunarDay = 0;
var y = c.getFullYear(); var ly = LunarYear.fromYear(currentYear);
var ly = LunarYear.fromYear(y);
var lms = ly.getMonths(); var lms = ly.getMonths();
for (var i = 0, j = lms.length; i < j; i++) { for (var i = 0, j = lms.length; i < j; i++) {
var m = lms[i]; var m = lms[i];
// 初一 // 初一
var firstDay = Solar.fromJulianDay(m.getFirstJulianDay()).getCalendar(); var firstDay = Solar.fromJulianDay(m.getFirstJulianDay());
firstDay.setHours(0); var days = ExactDate.getDaysBetweenYmd(firstDay.getYear(), firstDay.getMonth(), firstDay.getDay(), currentYear, currentMonth, currentDay);
firstDay.setMinutes(0);
firstDay.setSeconds(0);
firstDay.setMilliseconds(0);
var days = ExactDate.getDaysBetween(firstDay, c);
if (days < m.getDayCount()) { if (days < m.getDayCount()) {
lunarYear = m.getYear(); lunarYear = m.getYear();
lunarMonth = m.getMonth(); lunarMonth = m.getMonth();
@@ -776,9 +770,9 @@
getTimePositionCaiDesc:function(){ getTimePositionCaiDesc:function(){
return LunarUtil.POSITION_DESC[this.getTimePositionCai()]; return LunarUtil.POSITION_DESC[this.getTimePositionCai()];
}, },
getDayPositionTaiSui:function(){ _getDayPositionTaiSui:function(dayInGanZhi, yearZhiIndex){
var p = ''; var p = '';
switch (this.getDayInGanZhi()) { switch (dayInGanZhi) {
case '甲子': case '甲子':
case '乙丑': case '乙丑':
case '丙寅': case '丙寅':
@@ -820,12 +814,91 @@
p = '坎'; p = '坎';
break; break;
default: default:
p = LunarYear.fromYear(this.getYear()).getPositionTaiSui(); p = LunarUtil.POSITION_TAI_SUI_YEAR[yearZhiIndex];
} }
return p; return p;
}, },
getDayPositionTaiSuiDesc:function(){ getDayPositionTaiSui:function(sect){
return LunarUtil.POSITION_DESC[this.getDayPositionTaiSui()]; var dayInGanZhi;
var yearZhiIndex;
switch (sect) {
case 1:
dayInGanZhi = this.getDayInGanZhi();
yearZhiIndex = this._p.yearZhiIndex;
break;
case 3:
dayInGanZhi = this.getDayInGanZhi();
yearZhiIndex = this._p.yearZhiIndexExact;
break;
default:
dayInGanZhi = this.getDayInGanZhiExact2();
yearZhiIndex = this._p.yearZhiIndexByLiChun;
}
return this._getDayPositionTaiSui(dayInGanZhi, yearZhiIndex);
},
getDayPositionTaiSuiDesc:function(sect){
return LunarUtil.POSITION_DESC[this.getDayPositionTaiSui(sect)];
},
_getMonthPositionTaiSui:function(monthZhiIndex, monthGanIndex){
var p = '';
var m = monthZhiIndex - LunarUtil.BASE_MONTH_ZHI_INDEX;
if (m < 0) {
m += 12;
}
switch(m) {
case 0:
case 4:
case 8:
p = '艮';
break;
case 2:
case 6:
case 10:
p = '坤';
break;
case 3:
case 7:
case 11:
p = '巽';
break;
default:
p = LunarUtil.POSITION_GAN[monthGanIndex];
}
return p;
},
getMonthPositionTaiSui:function(sect){
var monthZhiIndex;
var monthGanIndex;
switch (sect) {
case 3:
monthZhiIndex = this._p.monthZhiIndexExact;
monthGanIndex = this._p.monthGanIndexExact;
break;
default:
monthZhiIndex = this._p.monthZhiIndex;
monthGanIndex = this._p.monthGanIndex;
}
return this._getMonthPositionTaiSui(monthZhiIndex, monthGanIndex);
},
getMonthPositionTaiSuiDesc:function(sect){
return LunarUtil.POSITION_DESC[this.getMonthPositionTaiSui(sect)];
},
getYearPositionTaiSui:function(sect){
var yearZhiIndex;
switch (sect) {
case 1:
yearZhiIndex = this._p.yearZhiIndex;
break;
case 3:
yearZhiIndex = this._p.yearZhiIndexExact;
break;
default:
yearZhiIndex = this._p.yearZhiIndexByLiChun;
}
return LunarUtil.POSITION_TAI_SUI_YEAR[yearZhiIndex];
},
getYearPositionTaiSuiDesc:function(sect){
return LunarUtil.POSITION_DESC[this.getYearPositionTaiSui(sect)];
}, },
getChong:function(){ getChong:function(){
return this.getDayChong(); return this.getDayChong();
@@ -910,59 +983,51 @@
}, },
_convertJieQi:function(name){ _convertJieQi:function(name){
var jq = name; var jq = name;
if('DONG_ZHI'===jq){ if('DONG_ZHI' === jq){
jq = '冬至'; jq = '冬至';
}else if('DA_HAN'===jq){ }else if('DA_HAN' === jq){
jq = '大寒'; jq = '大寒';
}else if('XIAO_HAN'===jq){ }else if('XIAO_HAN' === jq){
jq = '小寒'; jq = '小寒';
}else if('LI_CHUN'===jq){ }else if('LI_CHUN' === jq){
jq = '立春'; jq = '立春';
}else if('DA_XUE'===jq){ }else if('DA_XUE' === jq){
jq = '大雪'; jq = '大雪';
}else if('YU_SHUI'===jq){ }else if('YU_SHUI' === jq){
jq = '雨水'; jq = '雨水';
}else if('JING_ZHE'===jq){ }else if('JING_ZHE' === jq){
jq = '惊蛰'; jq = '惊蛰';
} }
return jq; return jq;
}, },
getJie:function(){ getJie:function(){
var d; for(var i=0, j=Lunar.JIE_QI_IN_USE.length; i<j; i+=2){
var jie='';
for(var i=0,j=Lunar.JIE_QI_IN_USE.length;i<j;i+=2){
var key = Lunar.JIE_QI_IN_USE[i]; var key = Lunar.JIE_QI_IN_USE[i];
d = this._p.jieQi[key]; var d = this._p.jieQi[key];
if(d.getYear()===this._p.solar.getYear()&&d.getMonth()===this._p.solar.getMonth()&&d.getDay()===this._p.solar.getDay()){ if(d.getYear() === this._p.solar.getYear() && d.getMonth() === this._p.solar.getMonth() && d.getDay() === this._p.solar.getDay()){
jie=key; return this._convertJieQi(key);
break;
} }
} }
return this._convertJieQi(jie); return '';
}, },
getQi:function(){ getQi:function(){
var d; for(var i=1, j=Lunar.JIE_QI_IN_USE.length; i<j; i+=2){
var qi='';
for(var i=1,j=Lunar.JIE_QI_IN_USE.length;i<j;i+=2){
var key = Lunar.JIE_QI_IN_USE[i]; var key = Lunar.JIE_QI_IN_USE[i];
d = this._p.jieQi[key]; var d = this._p.jieQi[key];
if(d.getYear()===this._p.solar.getYear()&&d.getMonth()===this._p.solar.getMonth()&&d.getDay()===this._p.solar.getDay()){ if(d.getYear() === this._p.solar.getYear() && d.getMonth() === this._p.solar.getMonth() && d.getDay() === this._p.solar.getDay()){
qi=key; return this._convertJieQi(key);
break;
} }
} }
return this._convertJieQi(qi); return '';
}, },
getJieQi:function(){ getJieQi:function(){
var name = '';
for(var key in this._p.jieQi){ for(var key in this._p.jieQi){
var d = this._p.jieQi[key]; var d = this._p.jieQi[key];
if(d.getYear()==this._p.solar.getYear()&&d.getMonth()==this._p.solar.getMonth()&&d.getDay()==this._p.solar.getDay()){ if(d.getYear() === this._p.solar.getYear() && d.getMonth() === this._p.solar.getMonth() && d.getDay() === this._p.solar.getDay()){
name = key; return this._convertJieQi(key);
break;
} }
} }
return this._convertJieQi(name); return '';
}, },
getWeek:function(){ getWeek:function(){
return this._p.weekIndex; return this._p.weekIndex;
@@ -1130,26 +1195,59 @@
getYueXiang:function(){ getYueXiang:function(){
return LunarUtil.YUE_XIANG[this._p.day]; return LunarUtil.YUE_XIANG[this._p.day];
}, },
getYearNineStar:function(){ _getYearNineStar:function(yearInGanZhi){
return LunarYear.fromYear(this._p.year).getNineStar(); var index = LunarUtil.getJiaZiIndex(yearInGanZhi) + 1;
var yearOffset = 0;
if (index != LunarUtil.getJiaZiIndex(this.getYearInGanZhi()) + 1) {
yearOffset = -1;
}
var yuan = Math.floor((this._p.year + yearOffset + 2696) / 60) % 3;
var offset = (62 + yuan * 3 - index) % 9;
if(0 === offset){
offset = 9;
}
return NineStar.fromIndex(offset - 1);
}, },
getMonthNineStar:function(){ getYearNineStar:function(sect){
var n = 12; var yearInGanZhi;
var yearZhi = this.getYearZhi(); switch (sect) {
if ('子午卯酉'.indexOf(yearZhi)>-1) { case 1:
n = 18; yearInGanZhi = this.getYearInGanZhi();
} else if ('辰戌丑未'.indexOf(yearZhi)>-1) { break;
n = 15; case 3:
yearInGanZhi = this.getYearInGanZhiExact();
break;
default:
yearInGanZhi = this.getYearInGanZhiByLiChun();
} }
var m = this._p.month; return this._getYearNineStar(yearInGanZhi);
if(m<0){ },
m = -m; _getMonthNineStar:function(yearZhiIndex, monthZhiIndex){
var index = yearZhiIndex % 3;
var n = 27 - (index * 3);
if (monthZhiIndex < LunarUtil.BASE_MONTH_ZHI_INDEX) {
n -= 3;
} }
var offset = (n-m)%9; var offset = (n - monthZhiIndex) % 9;
if(0===offset){ return NineStar.fromIndex(offset);
offset=9; },
getMonthNineStar:function(sect){
var yearZhiIndex;
var monthZhiIndex;
switch (sect) {
case 1:
yearZhiIndex = this._p.yearZhiIndex;
monthZhiIndex = this._p.monthZhiIndex;
break;
case 3:
yearZhiIndex = this._p.yearZhiIndexExact;
monthZhiIndex = this._p.monthZhiIndexExact;
break;
default:
yearZhiIndex = this._p.yearZhiIndexByLiChun;
monthZhiIndex = this._p.monthZhiIndex;
} }
return NineStar.fromIndex(offset-1); return this._getMonthNineStar(yearZhiIndex, monthZhiIndex);
}, },
getDayNineStar:function(){ getDayNineStar:function(){
var solarYmd = this._p.solar.toYmd(); var solarYmd = this._p.solar.toYmd();
@@ -1159,9 +1257,9 @@
var dongZhiIndex = LunarUtil.getJiaZiIndex(dongZhi.getLunar().getDayInGanZhi()); var dongZhiIndex = LunarUtil.getJiaZiIndex(dongZhi.getLunar().getDayInGanZhi());
var dongZhiIndex2 = LunarUtil.getJiaZiIndex(dongZhi2.getLunar().getDayInGanZhi()); var dongZhiIndex2 = LunarUtil.getJiaZiIndex(dongZhi2.getLunar().getDayInGanZhi());
var xiaZhiIndex = LunarUtil.getJiaZiIndex(xiaZhi.getLunar().getDayInGanZhi()); var xiaZhiIndex = LunarUtil.getJiaZiIndex(xiaZhi.getLunar().getDayInGanZhi());
var solarShunBai = null; var solarShunBai;
var solarShunBai2 = null; var solarShunBai2;
var solarNiZi = null; var solarNiZi;
if (dongZhiIndex>29) { if (dongZhiIndex>29) {
solarShunBai = dongZhi.next(60 - dongZhiIndex); solarShunBai = dongZhi.next(60 - dongZhiIndex);
} else { } else {
@@ -1206,8 +1304,7 @@
start = asc ? 3 : 5; start = asc ? 3 : 5;
} }
var index = asc ? start + this._p.timeZhiIndex : start + 9 - this._p.timeZhiIndex; var index = asc ? start + this._p.timeZhiIndex : start + 9 - this._p.timeZhiIndex;
var offset = index % 9; return NineStar.fromIndex(index % 9);
return NineStar.fromIndex(offset);
}, },
getSolar:function(){ getSolar:function(){
return this._p.solar; return this._p.solar;
@@ -1324,16 +1421,33 @@
return this._buildJieQi(name, near); return this._buildJieQi(name, near);
}, },
getCurrentJieQi:function(){ getCurrentJieQi:function(){
var name = this.getJieQi(); for(var key in this._p.jieQi){
return name.length>0 ? this._buildJieQi(name,this.solar) : null; var d = this._p.jieQi[key];
if(d.getYear() === this._p.solar.getYear() && d.getMonth() === this._p.solar.getMonth() && d.getDay() === this._p.solar.getDay()){
return this._buildJieQi(this._convertJieQi(key), d);
}
}
return null;
}, },
getCurrentJie:function(){ getCurrentJie:function(){
var name = this.getJie(); for(var i=0, j=Lunar.JIE_QI_IN_USE.length; i<j; i+=2){
return name.length>0 ? this._buildJieQi(name,this.solar) : null; var key = Lunar.JIE_QI_IN_USE[i];
var d = this._p.jieQi[key];
if(d.getYear() === this._p.solar.getYear() && d.getMonth() === this._p.solar.getMonth() && d.getDay() === this._p.solar.getDay()){
return this._buildJieQi(this._convertJieQi(key), d);
}
}
return null;
}, },
getCurrentQi:function(){ getCurrentQi:function(){
var name = this.getQi(); for(var i=1, j=Lunar.JIE_QI_IN_USE.length; i<j; i+=2){
return name.length>0 ? this._buildJieQi(name,this.solar) : null; var key = Lunar.JIE_QI_IN_USE[i];
var d = this._p.jieQi[key];
if(d.getYear() === this._p.solar.getYear() && d.getMonth() === this._p.solar.getMonth() && d.getDay() === this._p.solar.getDay()){
return this._buildJieQi(this._convertJieQi(key), d);
}
}
return null;
}, },
getEightChar:function(){ getEightChar:function(){
if(!this._p.eightChar){ if(!this._p.eightChar){
@@ -1545,10 +1659,8 @@
getHou:function(){ getHou:function(){
var jieQi = this.getPrevJieQi(true); var jieQi = this.getPrevJieQi(true);
var name = jieQi.getName(); var name = jieQi.getName();
var currentCalendar = ExactDate.fromYmd(this._p.solar.getYear(),this._p.solar.getMonth(),this._p.solar.getDay());
var startSolar = jieQi.getSolar(); var startSolar = jieQi.getSolar();
var startCalendar = ExactDate.fromYmd(startSolar.getYear(),startSolar.getMonth(),startSolar.getDay()); var days = days = ExactDate.getDaysBetweenYmd(startSolar.getYear(),startSolar.getMonth(),startSolar.getDay(), this._p.solar.getYear(),this._p.solar.getMonth(),this._p.solar.getDay());
var days = days = ExactDate.getDaysBetween(startCalendar, currentCalendar);
return name + ' ' + LunarUtil.HOU[(Math.floor(days/5)) % LunarUtil.HOU.length]; return name + ' ' + LunarUtil.HOU[(Math.floor(days/5)) % LunarUtil.HOU.length];
}, },
getDayLu:function(){ getDayLu:function(){
@@ -1612,10 +1724,11 @@
getIndex:function(){ getIndex:function(){
var firstDate = ExactDate.fromYmd(this._p.year,this._p.month,1); var firstDate = ExactDate.fromYmd(this._p.year,this._p.month,1);
var firstDayWeek = firstDate.getDay(); var firstDayWeek = firstDate.getDay();
if(firstDayWeek===0){ var offset = firstDayWeek - this._p.start;
firstDayWeek = 7; if(offset < 0) {
offset += 7;
} }
return Math.ceil((this._p.day+firstDayWeek-this._p.start)/7); return Math.ceil((this._p.day + offset)/7);
}, },
/** /**
* 周推移 * 周推移
@@ -2015,6 +2128,8 @@
jieQiJulianDays: [] jieQiJulianDays: []
}, },
getYear:function(){return this._p.year;}, getYear:function(){return this._p.year;},
getGanIndex:function(){return this._p.ganIndex;},
getZhiIndex:function(){return this._p.zhiIndex;},
getGan:function(){return LunarUtil.GAN[this._p.ganIndex+1];}, getGan:function(){return LunarUtil.GAN[this._p.ganIndex+1];},
getZhi:function(){return LunarUtil.ZHI[this._p.zhiIndex+1];}, getZhi:function(){return LunarUtil.ZHI[this._p.zhiIndex+1];},
getGanZhi:function(){return this.getGan()+this.getZhi();}, getGanZhi:function(){return this.getGan()+this.getZhi();},
@@ -2101,22 +2216,13 @@
return _YUN[Math.floor((this._p.year+2696)/20)%9]+'运'; return _YUN[Math.floor((this._p.year+2696)/20)%9]+'运';
}, },
getNineStar:function(){ getNineStar:function(){
var index = LunarUtil.getJiaZiIndex(this.getGanZhi())+1; var index = LunarUtil.getJiaZiIndex(this.getGanZhi()) + 1;
var n = 65; var yuan = Math.floor((this._p.year + 2696) / 60) % 3;
switch(this.getYuan()){ var offset = (62 + yuan * 3 - index) % 9;
case '中元': if(0 === offset){
n = 68; offset = 9;
break;
case '下元':
n = 62;
break;
default:
} }
var offset = (n-index)%9; return NineStar.fromIndex(offset - 1);
if(0===offset){
offset=9;
}
return NineStar.fromIndex(offset-1);
}, },
getPositionXi:function(){ getPositionXi:function(){
return LunarUtil.POSITION_XI[this._p.ganIndex+1]; return LunarUtil.POSITION_XI[this._p.ganIndex+1];
@@ -2300,6 +2406,20 @@
getPositionTaiSuiDesc:function(){ getPositionTaiSuiDesc:function(){
return LunarUtil.POSITION_DESC[this.getPositionTaiSui()]; return LunarUtil.POSITION_DESC[this.getPositionTaiSui()];
}, },
getNineStar:function(){
var index = LunarYear.fromYear(this._p.year).getZhiIndex() % 3;
var m = this._p.month;
if (m < 0) {
m = -m;
}
var monthZhiIndex = (13 + m) % 12;
var n = 27 - (index * 3);
if (monthZhiIndex < LunarUtil.BASE_MONTH_ZHI_INDEX) {
n -= 3;
}
var offset = (n - monthZhiIndex) % 9;
return NineStar.fromIndex(offset);
},
toString:function(){return this.getYear()+'年'+(this.isLeap()?'闰':'')+LunarUtil.MONTH[Math.abs(this.getMonth())]+'月('+this.getDayCount()+')天';} toString:function(){return this.getYear()+'年'+(this.isLeap()?'闰':'')+LunarUtil.MONTH[Math.abs(this.getMonth())]+'月('+this.getDayCount()+')天';}
}; };
}; };
@@ -2577,6 +2697,9 @@
days += this.getDaysOfMonth(year, i); days += this.getDaysOfMonth(year, i);
} }
days += day; days += day;
if (1582 === year && 10 === month && day >= 15) {
days -= 10;
}
return days; return days;
}, },
getWeeksOfMonth:function(year,month,start){ getWeeksOfMonth:function(year,month,start){
@@ -3345,10 +3468,8 @@
const startTimeZhiIndex = (start.getHour() === 23) ? 11 : LunarUtil.getTimeZhiIndex(start.toYmdHms().substr(11, 5)); const startTimeZhiIndex = (start.getHour() === 23) ? 11 : LunarUtil.getTimeZhiIndex(start.toYmdHms().substr(11, 5));
// 时辰差 // 时辰差
var hourDiff = endTimeZhiIndex - startTimeZhiIndex; var hourDiff = endTimeZhiIndex - startTimeZhiIndex;
var endCalendar = ExactDate.fromYmd(end.getYear(), end.getMonth(), end.getDay());
var startCalendar = ExactDate.fromYmd(start.getYear(), start.getMonth(), start.getDay());
// 天数差 // 天数差
var dayDiff = Math.floor((endCalendar - startCalendar) / (1000 * 3600 * 24)); var dayDiff = ExactDate.getDaysBetweenYmd(start.getYear(), start.getMonth(), start.getDay(), end.getYear(), end.getMonth(), end.getDay());
if (hourDiff < 0) { if (hourDiff < 0) {
hourDiff += 12; hourDiff += 12;
dayDiff--; dayDiff--;

View File

@@ -1,6 +1,6 @@
{ {
"name": "lunar-javascript", "name": "lunar-javascript",
"version": "1.2.20", "version": "1.2.26",
"description": "lunar is a calendar library for Solar and Chinese Lunar.", "description": "lunar is a calendar library for Solar and Chinese Lunar.",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {