|
|
|
|
@@ -983,59 +983,51 @@
|
|
|
|
|
},
|
|
|
|
|
_convertJieQi:function(name){
|
|
|
|
|
var jq = name;
|
|
|
|
|
if('DONG_ZHI'===jq){
|
|
|
|
|
if('DONG_ZHI' === jq){
|
|
|
|
|
jq = '冬至';
|
|
|
|
|
}else if('DA_HAN'===jq){
|
|
|
|
|
}else if('DA_HAN' === jq){
|
|
|
|
|
jq = '大寒';
|
|
|
|
|
}else if('XIAO_HAN'===jq){
|
|
|
|
|
}else if('XIAO_HAN' === jq){
|
|
|
|
|
jq = '小寒';
|
|
|
|
|
}else if('LI_CHUN'===jq){
|
|
|
|
|
}else if('LI_CHUN' === jq){
|
|
|
|
|
jq = '立春';
|
|
|
|
|
}else if('DA_XUE'===jq){
|
|
|
|
|
}else if('DA_XUE' === jq){
|
|
|
|
|
jq = '大雪';
|
|
|
|
|
}else if('YU_SHUI'===jq){
|
|
|
|
|
}else if('YU_SHUI' === jq){
|
|
|
|
|
jq = '雨水';
|
|
|
|
|
}else if('JING_ZHE'===jq){
|
|
|
|
|
}else if('JING_ZHE' === jq){
|
|
|
|
|
jq = '惊蛰';
|
|
|
|
|
}
|
|
|
|
|
return jq;
|
|
|
|
|
},
|
|
|
|
|
getJie:function(){
|
|
|
|
|
var d;
|
|
|
|
|
var jie='';
|
|
|
|
|
for(var i=0,j=Lunar.JIE_QI_IN_USE.length;i<j;i+=2){
|
|
|
|
|
for(var i=0, j=Lunar.JIE_QI_IN_USE.length; i<j; i+=2){
|
|
|
|
|
var key = Lunar.JIE_QI_IN_USE[i];
|
|
|
|
|
d = this._p.jieQi[key];
|
|
|
|
|
if(d.getYear()===this._p.solar.getYear()&&d.getMonth()===this._p.solar.getMonth()&&d.getDay()===this._p.solar.getDay()){
|
|
|
|
|
jie=key;
|
|
|
|
|
break;
|
|
|
|
|
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._convertJieQi(key);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return this._convertJieQi(jie);
|
|
|
|
|
return '';
|
|
|
|
|
},
|
|
|
|
|
getQi:function(){
|
|
|
|
|
var d;
|
|
|
|
|
var qi='';
|
|
|
|
|
for(var i=1,j=Lunar.JIE_QI_IN_USE.length;i<j;i+=2){
|
|
|
|
|
for(var i=1, j=Lunar.JIE_QI_IN_USE.length; i<j; i+=2){
|
|
|
|
|
var key = Lunar.JIE_QI_IN_USE[i];
|
|
|
|
|
d = this._p.jieQi[key];
|
|
|
|
|
if(d.getYear()===this._p.solar.getYear()&&d.getMonth()===this._p.solar.getMonth()&&d.getDay()===this._p.solar.getDay()){
|
|
|
|
|
qi=key;
|
|
|
|
|
break;
|
|
|
|
|
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._convertJieQi(key);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return this._convertJieQi(qi);
|
|
|
|
|
return '';
|
|
|
|
|
},
|
|
|
|
|
getJieQi:function(){
|
|
|
|
|
var name = '';
|
|
|
|
|
for(var key in this._p.jieQi){
|
|
|
|
|
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()){
|
|
|
|
|
name = key;
|
|
|
|
|
break;
|
|
|
|
|
if(d.getYear() === this._p.solar.getYear() && d.getMonth() === this._p.solar.getMonth() && d.getDay() === this._p.solar.getDay()){
|
|
|
|
|
return this._convertJieQi(key);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return this._convertJieQi(name);
|
|
|
|
|
return '';
|
|
|
|
|
},
|
|
|
|
|
getWeek:function(){
|
|
|
|
|
return this._p.weekIndex;
|
|
|
|
|
@@ -1209,18 +1201,8 @@
|
|
|
|
|
if (index != LunarUtil.getJiaZiIndex(this.getYearInGanZhi()) + 1) {
|
|
|
|
|
yearOffset = -1;
|
|
|
|
|
}
|
|
|
|
|
var n = 65;
|
|
|
|
|
var yuan = Math.floor((this._p.year + yearOffset + 2696) / 60) % 3;
|
|
|
|
|
switch(yuan){
|
|
|
|
|
case 2:
|
|
|
|
|
n = 68;
|
|
|
|
|
break;
|
|
|
|
|
case 0:
|
|
|
|
|
n = 62;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
}
|
|
|
|
|
var offset = (n - index) % 9;
|
|
|
|
|
var offset = (62 + yuan * 3 - index) % 9;
|
|
|
|
|
if(0 === offset){
|
|
|
|
|
offset = 9;
|
|
|
|
|
}
|
|
|
|
|
@@ -1439,16 +1421,33 @@
|
|
|
|
|
return this._buildJieQi(name, near);
|
|
|
|
|
},
|
|
|
|
|
getCurrentJieQi:function(){
|
|
|
|
|
var name = this.getJieQi();
|
|
|
|
|
return name.length>0 ? this._buildJieQi(name,this.solar) : null;
|
|
|
|
|
for(var key in this._p.jieQi){
|
|
|
|
|
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(){
|
|
|
|
|
var name = this.getJie();
|
|
|
|
|
return name.length>0 ? this._buildJieQi(name,this.solar) : null;
|
|
|
|
|
for(var i=0, j=Lunar.JIE_QI_IN_USE.length; i<j; i+=2){
|
|
|
|
|
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(){
|
|
|
|
|
var name = this.getQi();
|
|
|
|
|
return name.length>0 ? this._buildJieQi(name,this.solar) : null;
|
|
|
|
|
for(var i=1, j=Lunar.JIE_QI_IN_USE.length; i<j; i+=2){
|
|
|
|
|
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(){
|
|
|
|
|
if(!this._p.eightChar){
|
|
|
|
|
@@ -1660,10 +1659,8 @@
|
|
|
|
|
getHou:function(){
|
|
|
|
|
var jieQi = this.getPrevJieQi(true);
|
|
|
|
|
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 startCalendar = ExactDate.fromYmd(startSolar.getYear(),startSolar.getMonth(),startSolar.getDay());
|
|
|
|
|
var days = days = ExactDate.getDaysBetween(startCalendar, currentCalendar);
|
|
|
|
|
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];
|
|
|
|
|
},
|
|
|
|
|
getDayLu:function(){
|
|
|
|
|
@@ -1727,10 +1724,11 @@
|
|
|
|
|
getIndex:function(){
|
|
|
|
|
var firstDate = ExactDate.fromYmd(this._p.year,this._p.month,1);
|
|
|
|
|
var firstDayWeek = firstDate.getDay();
|
|
|
|
|
if(firstDayWeek===0){
|
|
|
|
|
firstDayWeek = 7;
|
|
|
|
|
var offset = firstDayWeek - this._p.start;
|
|
|
|
|
if(offset < 0) {
|
|
|
|
|
offset += 7;
|
|
|
|
|
}
|
|
|
|
|
return Math.ceil((this._p.day+firstDayWeek-this._p.start)/7);
|
|
|
|
|
return Math.ceil((this._p.day + offset)/7);
|
|
|
|
|
},
|
|
|
|
|
/**
|
|
|
|
|
* 周推移
|
|
|
|
|
@@ -2130,6 +2128,8 @@
|
|
|
|
|
jieQiJulianDays: []
|
|
|
|
|
},
|
|
|
|
|
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];},
|
|
|
|
|
getZhi:function(){return LunarUtil.ZHI[this._p.zhiIndex+1];},
|
|
|
|
|
getGanZhi:function(){return this.getGan()+this.getZhi();},
|
|
|
|
|
@@ -2216,22 +2216,13 @@
|
|
|
|
|
return _YUN[Math.floor((this._p.year+2696)/20)%9]+'运';
|
|
|
|
|
},
|
|
|
|
|
getNineStar:function(){
|
|
|
|
|
var index = LunarUtil.getJiaZiIndex(this.getGanZhi())+1;
|
|
|
|
|
var n = 65;
|
|
|
|
|
switch(this.getYuan()){
|
|
|
|
|
case '中元':
|
|
|
|
|
n = 68;
|
|
|
|
|
break;
|
|
|
|
|
case '下元':
|
|
|
|
|
n = 62;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
var index = LunarUtil.getJiaZiIndex(this.getGanZhi()) + 1;
|
|
|
|
|
var yuan = Math.floor((this._p.year + 2696) / 60) % 3;
|
|
|
|
|
var offset = (62 + yuan * 3 - index) % 9;
|
|
|
|
|
if(0 === offset){
|
|
|
|
|
offset = 9;
|
|
|
|
|
}
|
|
|
|
|
var offset = (n-index)%9;
|
|
|
|
|
if(0===offset){
|
|
|
|
|
offset=9;
|
|
|
|
|
}
|
|
|
|
|
return NineStar.fromIndex(offset-1);
|
|
|
|
|
return NineStar.fromIndex(offset - 1);
|
|
|
|
|
},
|
|
|
|
|
getPositionXi:function(){
|
|
|
|
|
return LunarUtil.POSITION_XI[this._p.ganIndex+1];
|
|
|
|
|
@@ -2415,23 +2406,19 @@
|
|
|
|
|
getPositionTaiSuiDesc:function(){
|
|
|
|
|
return LunarUtil.POSITION_DESC[this.getPositionTaiSui()];
|
|
|
|
|
},
|
|
|
|
|
getMonthNineStar:function(){
|
|
|
|
|
var n = 12;
|
|
|
|
|
var yearZhi = LunarYear.fromYear(this._p.year).getZhi();
|
|
|
|
|
if ('子午卯酉'.indexOf(yearZhi)>-1) {
|
|
|
|
|
n = 18;
|
|
|
|
|
} else if ('辰戌丑未'.indexOf(yearZhi)>-1) {
|
|
|
|
|
n = 15;
|
|
|
|
|
}
|
|
|
|
|
getNineStar:function(){
|
|
|
|
|
var index = LunarYear.fromYear(this._p.year).getZhiIndex() % 3;
|
|
|
|
|
var m = this._p.month;
|
|
|
|
|
if(m<0){
|
|
|
|
|
if (m < 0) {
|
|
|
|
|
m = -m;
|
|
|
|
|
}
|
|
|
|
|
var offset = (n-m)%9;
|
|
|
|
|
if(0===offset){
|
|
|
|
|
offset=9;
|
|
|
|
|
var monthZhiIndex = (13 + m) % 12;
|
|
|
|
|
var n = 27 - (index * 3);
|
|
|
|
|
if (monthZhiIndex < LunarUtil.BASE_MONTH_ZHI_INDEX) {
|
|
|
|
|
n -= 3;
|
|
|
|
|
}
|
|
|
|
|
return NineStar.fromIndex(offset-1);
|
|
|
|
|
var offset = (n - monthZhiIndex) % 9;
|
|
|
|
|
return NineStar.fromIndex(offset);
|
|
|
|
|
},
|
|
|
|
|
toString:function(){return this.getYear()+'年'+(this.isLeap()?'闰':'')+LunarUtil.MONTH[Math.abs(this.getMonth())]+'月('+this.getDayCount()+')天';}
|
|
|
|
|
};
|
|
|
|
|
@@ -3481,10 +3468,8 @@
|
|
|
|
|
const startTimeZhiIndex = (start.getHour() === 23) ? 11 : LunarUtil.getTimeZhiIndex(start.toYmdHms().substr(11, 5));
|
|
|
|
|
// 时辰差
|
|
|
|
|
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) {
|
|
|
|
|
hourDiff += 12;
|
|
|
|
|
dayDiff--;
|
|
|
|
|
|