function leapN(y){ ///求閏月數 var leapN=0;var lea=0; var lea2=''; // var lea3=leapM6(y); return lea3; } function zqmo(y,n){//y年每個節氣日所在月到1900年,1,1總月數(閏月未扣除)冬至n=24 var dtt=S(y,n,1);var dt=antiD0(y,floor(dtt)); var m=floor(dt/100);var m0=m;if(m<1)m0=m+12;if(m>12)m0=m-12; var d=dt%100;var d1=d;if(m<0)d1=(100*abs(m))+dt; var lumt2=lunData(y,m0,d1,5);if(m>12)lumt2=lunData(y+1,m0,d1,5);if(m<1)lumt2=lunData(y-1,m0,d1,5); var dzrs=lumt2; return dzrs; } function lunMoa(y,m,d,a){//年、月數 var lumt=lunData(y,m,d,5);var nlnuy0=leapM6(y-1);var nlnuy=leapM6(y); var lmn5=leapM5(y);var lmn6=0;if(lmn5==12)lmn6=12; var leapNm2=nlnuy;if(y<-1187)leapNm2=lmn6; var leapN=0;//從當年到-2699年的總閏月數 var leapN2=0;if(leapNm2>0)leapN2=1; if(y>=2302||y<-1187){ var lumt2=zqmo(y-1,24);//上年冬至日所在月到1900年,1,1總月數(閏月未扣除) var dzrs=lumt2;}else{var dzrs=0; }// if(y>=-1187&&y<2302){ leapN=leapNum(y);var lumq=-38180; var MonN=(lumt-lumq)-leapN;//當日到-1187年,2,7的總月數(扣除閏月) //電腦醫萬年暦及福星萬年暦史上修改月建開紿 if(lumt>=-14076&&lumt<-14071)MonN=MonN+2;//761,12,2--762,4,29 if(lumt<-14830) MonN=MonN+2;//700,12,15 if(lumt<-14966) MonN=MonN-2;//689,12,18 if(lumt<-20531) MonN++;//240,1,12 if(lumt<-20565) MonN--;//237,4,13 if(lumt<-23205) MonN++;//23,11,2 if(lumt<-23388) MonN--;//9,1,15 if(lumt<-24771) MonN+=3;//-103,3,23 if(lumt<-32417) MonN++;//-721,1,16 if(lumt<-36425) MonN--;//-1046,12,30 if(lumt<-43276) MonN--;//-1599,2,1//史上修改月建完 var leapNk=0;if(leapMon(y)>0)leapNk=1; var lunM8aa=ifGr5(y,m,d); var luny=floor((MonN+9+leapNk)/12)-1188;if(lunM8aa<7&&m>2)luny=floor((MonN+9)/12)-1188; var lunM=round(rem(MonN-3,12)+1); var lunM5a=round(rem(MonN-3,12)+1); if(lunM8aa<7&&leapMon(luny)>0&&lunM==(leapMon(luny)+1)&&m>9&&lunM<5) lunM=(lunM-1)*(-1); else{ if(lunM8aa<7&&leapMon(luny)>0&&lunM<leapMon(luny)&&m>=9&&lunM<5) lunM=lunM; else{ if(lunM8aa<7&&leapMon(luny)>0&&lunM>leapMon(luny)&&m>=9&&lunM<5) lunM--; else{ if(leapMon(luny)>0&&lunM==leapMon(luny)&&(m-lunM)<5&&(m-lunM)>-2||y>-150&&lunM8aa==7&&leapMon(y-1)>10&&lunM==leapMon(y-1)&&m<5||lunM8aa<7&&leapMon(luny)==12&&lunM==leapMon(luny)&&m>8) lunM*=-1; else{ if(m<5&&lunM>9&&leapMon(y)||lunM<leapMon(luny)) lunM++;//y年是閏月但當月未過閏月則前面多扣除了本年的閏月,這裏應當補償 if(lunM>=0)lunM=round(rem(lunM-1,12)+1); }}}} }else{//2302年後的 if(y<-1187&&lmn5>=12)leapN2=1; var lmn8=0;if(y<-1187&&lmn5>=12)lmn8=12; var MonN=(lumt-(dzrs))+37-leapN2;//當日到上年冬至所在月的總月數(扣除閏月) if(y>=-1598&&y<-1187||y==-1599&&m>=2) MonN++; var lunM=round(rem(MonN-3,12)+1); var lunMk=round(rem(lunM-1+leapN2,12)+1);if(nlnuy0==11&&m<=3)lunMk=round(rem(lunM-2,12)+1); if(nlnuy==12||y<-1187&&lmn8==12)lunMk=round(rem(lunM-1,12)+1); var luny=y;if(m<=3&&lunMk>=10)luny=y-1; if(m<=3&&lunM==12&&nlnuy0==11) lunM=-11; else{ if(lunM==nlnuy&&nlnuy>0&&nlnuy<11||m<=3&&lunM>=10&&m<lunM&&lunM==nlnuy&&nlnuy>0&&nlnuy<11||nlnuy==11&&m>=11&&lunM==11) lunM*=-1; else{ if(lunM<nlnuy&&nlnuy>0&&nlnuy<12||m<=3&&lunM>=10&&m<lunM&&nlnuy&&nlnuy>0&&nlnuy<12) lunM++; else{ if(nlnuy==12&&m<=2&&lunM==nlnuy&&lunM>2||y<-1187&&lmn8==12&&m<=4&&lunM==lmn8&&lunM>3) lunM*=-1; else{ if(nlnuy==12&&m<=2&&lunM<nlnuy&&lunM>2||y<-1187&&lmn8==12&&m<=4&&lunM<lmn8&&lunM>3) lunM++; else{ if(nlnuy0==11&&lunM>=0) lunM--; }}}}} if(lunM>=0)lunM=round(rem(lunM-1,12)+1); } if(y<-1187&&lunM==-12) lunM=13; if(a==1){ return luny; }else{ return lunM; }}
|