1
0
mirror of synced 2026-04-22 00:08:41 +08:00

Compare commits

..

3 Commits

Author SHA1 Message Date
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
2 changed files with 62 additions and 74 deletions

134
lunar.js
View File

@@ -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){
@@ -2130,6 +2129,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 +2217,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 +2407,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()+')天';}
};

View File

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