中华农历论坛知识讨论区历法知识 → [分享]献给那些和我采用同样核心代码的人们做参考。


  共有31106人关注过本帖树形打印

主题:[分享]献给那些和我采用同样核心代码的人们做参考。

帅哥哟,离线,有人找我吗?
chwc
  1楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:603 积分:5315 威望:0 精华:4 注册:2008/4/21 19:06:00
[分享]献给那些和我采用同样核心代码的人们做参考。  发帖心情 Post By:2008/12/16 11:02:00

您无权查看精华帖子

[本帖被加为精华]
支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
chwc
  2楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:603 积分:5315 威望:0 精华:4 注册:2008/4/21 19:06:00
  发帖心情 Post By:2008/12/16 12:21:00

//--判断农历历吏上颁行历种--//
  function ifGr5(y,m,d){  //公历y年m月(1,2..12,下同)d日
    if(y<-1599||y==-1599&&m==1&&d==1)
    var opt='6';  //厦历
    else
    if(y>=-1599&&y<-1046||y==-1046&&m<=11||y==-1046&&m==12&&d<30)
    opt='3';  //殷历
    else
    if(y==-1046&&m==12&&d>=30||y>=-1045&&y<-721||y==-721&&m==1&&d<16)
      opt='0';  //周历
    else
      if(y==-721&&m==1&&d>=16||y==-721&&m>=2||y>-721&&y<-476||y==-476&&m==11&&d<27||y==-476&&m<11)
        opt='5';  //鲁历
    if(y==-476&&m==11&&d>=27||y==-476&&m==12||y>-476&&y<-264||y==-264&&m==11&&d<23||y==-264&&m<11)
      var opt='0';  //周历
    else
      if(y==-264&&m==11&&d>=23||y==-264&&m==12||y>=-264&&y<-255||y==-255&&m<11||y==-255&&m==11&&d<15)
        opt='0';  //周历同秦建亥-秦
      else ///
     if(y==-255&&m==11&&d>=15||y==-255&&m==12||y>=-254&&y<-103||y==-103&&m<3||y==-103&&m==3&&d<23)
        opt='2';  //秦历
      else
    if(y==-103&&m==3&&d>=23||y==-103&&m>3||y>-103&&y<9||y==9&&m==1&&d<15)
       opt='6';  //厦历
     else
     if(y==9&&m==1&&d>=15||y==9&&m>1||y>09&&y<23||y==23&&m<11||y==23&&m==11&&d==1)
        opt='4';  //殷历
     else
    if(y==23&&m==11&&d>=2||y==23&&m>11||y>23&&y<237||y==237&&m<4||y==237&&m==4&&d<13)
       opt='6';  //厦历
     else
    if(y==237&&m==4&&d>=13||y==237&&m>4||y>237&&y<240||y==240&&m<1||y==240&&m==1&&d<12)
        opt='4';  //殷历-魏
     else
    if(y==240&&m==1&&d>=12||y==240&&m>1||y>240&&y<689||y==689&&m<12||y==689&&m==12&&d<18)
        opt='6';  //厦历
    else
    if(y==689&&m==12&&d>=18||y==689&&m>12||y>689&&y<700||y==700&&m<12||y==700&&m==12&&d<15)
       opt='1';  //周历
    else
    if(y==700&&m==12&&d>=15||y==700&&m>12||y>700&&y<761||y==761&&m<12||y==761&&m==12&&d==1)
       opt='6';  //厦历
    else
    if(y==761&&m==12&&d>1||y==762&&m<4||y==762&&m==4&&d<29)
        opt='1';  //周历
    else
    if(y==762&&m==4&&d>=29||y==762&&m<4||y>762)
     opt='6';  //厦历
     return opt
   }
  var ifGr5a=new Array('周历','行周历','秦历','殷历','行殷历','鲁历','厦历');
/////角度函数;没改动
function ang(x,t,c1,t0,t2,t3){
  return tail(c1*x)*2*PI()+t0-t2*t*t-t3*t*t*t;
}

//-------数学函数没改动------//
function PI(){
  return Math.PI;
}

function sin(x){
  return Math.sin(x);
}

function cos(x){
  return Math.cos(x);
}

function abs(x){
  return Math.abs(x);
}

function floor(x){///取整
  return Math.floor(x);
}

function round(x){
  return Math.round(x);
}

function tail(x){
  return x-floor(x);
}

function rem(x,w){  //广义求余
  return tail(x/w)*w;
}
//日差天数--未改动
function D0(y,m,d){
  var ifG=ifGr(y,m,d,1);
  var monL=new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
  if(ifG)
    if((y%100!=0&&y%4==0)||(y%400==0))
      monL[2]+=1;
    else ;
  else
    if(y%4==0)
      monL[2]+=1;
    else ;
  var v=0;
  for(var i=0;i<=m-1;i++){
    v+=monL[i];
  }
  v+=d;
  if(y==1582){
    if(ifG==1)
      v-=10;
    if(ifG==-1)
      v=1/0;  //infinity
  }
  return v;
}

//儒略日--未改动
function JD(y,m,d,h,min,sec,zone){
  var ifG=ifGr(y,m,d,1);
  var jt=(h+(min+sec/60)/60)/24-0.5-zone/24;
  var jd=(ifG)?(erD(y,m,d)+1721425+jt):(erD(y,m,d)+1721425+jt);//儒略日
  return jd;
}
//等效标準天数--未改动
function erD(y,m,d){
  var v=(y-1)*365+floor((y-1)/4)+D0(y,m,d)-2;  //Julian的等效标準天数
  if(y>1582)
    v+=-floor((y-1)/100)+floor((y-1)/400)+2;  //Gregorian的等效标準天数
  return v;
}

function S(y,n,pd){  //节气;pd取值为0或1,分别表示平气和定气,该函数返回节气的D0值
  var yk=365.2423112;///回归年
  var jk=y-2100;
  var j=0.000088931/3400*jk;if(y<2200)j=0;////对2200年以后回归年变化的估算,由不留姓名的网友提供。
  var yk2=yk-j;
  var juD=y*(yk2-6.4e-14*(y-100)*(y-100)-3.047e-8*(y-100))+15.218427*n+1721050.71301;//儒略日
  var tht=3e-4*y-0.372781384-0.2617913325*n;//角度
  var yrD=(1.945*sin(tht)-0.01206*sin(2*tht))*(1.048994-2.583e-5*y);//年差实均数
  var shuoD=-18e-4*sin(2.313908653*y-0.439822951-3.0443*n);//朔差实均数
  var vs=(pd)?(juD+yrD+shuoD-erD(y,1,0)-1721425):(juD-erD(y,1,0)-1721425);
  return vs;
}

[此贴子已经被作者于2008-12-16 16:21:58编辑过]

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
chwc
  3楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:603 积分:5315 威望:0 精华:4 注册:2008/4/21 19:06:00
  发帖心情 Post By:2008/12/16 12:31:00

function lunDate(y,m,d){ //求日数
  var t=(y-1899.5)/100;
  var ms=floor((y-1900)*12.3685);
  var rpi=180/PI();
  var zone=8;  //时区
  var f0=ang(ms,t,0,0.75933,2.172e-4,1.55e-7)+0.53058868*ms-8.37e-4*t+zone/24+0.5;
  var fc=0.1734-3.93e-4*t;
  var j0=693595+29*ms;
  var aa0=ang(ms,t,0.08084821133,359.2242/rpi,0.0000333/rpi,0.00000347/rpi);
  var ab0=ang(ms,t,7.171366127999999e-2,306.0253/rpi,-0.0107306/rpi,-0.00001236/rpi);
  var ac0=ang(ms,t,0.08519585128,21.2964/rpi,0.0016528/rpi,0.00000239/rpi);
  var ecli=0; 
  var lunD=-1;  //农历日数
  var jerD=erD(y,m,d);////等效标準天数
  var jeJD=round(JD(y,m,d,20,0,0,8)*1000)/1000;////儒略日
  /////
   if(jeJD>=1410952&&jeJD<1947169){      /////-850年到619平朔;
  if(jeJD>=1410952&&jeJD<1565456){
   var jsf=0.00269249*(y-(-721))       
   var zk1=floor((jeJD-1457727.915958)/29.5306);       /////-722-1-16到428;数据来自《春秋战国秦汉朔闰表》
   var sou0=floor(1457727.915958-jsf+29.530805106*(zk1-1)+0.5);
   var sou1=floor(1457727.915958-jsf+29.530805106*zk1+0.5);
   var sou2=floor(1457727.915958-jsf+29.530805106*(zk1+1)+0.5);
   var mlunD=sou2 - sou1;var mlunD0=sou1 - sou0;
   var lunD1=jeJD-sou1+1;
  }else{
  if(jeJD>=1565456&&jeJD<1683518){
   var zk1=floor((jeJD-1565455.530851)/29.5306);  /////前428年-12-26;数据来自《春秋战国秦汉朔闰表》
   var sou0=floor(1565455.530851+29.530805*(zk1-1)+0.5);
   var sou1=floor(1565455.530851+29.530805*zk1+0.5);
   var sou2=floor(1565455.530851+29.530805*(zk1+1)+0.5);
   var mlunD=sou2 - sou1;var mlunD0=sou1 - sou0;
   var lunD1=jeJD-sou1+1;
  }else{
  if(jeJD>=1683518&&jeJD<1752148){
   var zk1=floor((jeJD-1683489.570610)/29.5306); /////前104年-02-22起h=0.00324;数据来自《寿星万年历》
   var sou0=floor(1683489.570910+29.53086158*(zk1-1)+0.5);
   var sou1=floor(1683489.570910+29.53086158*zk1+0.5);
   var sou2=floor(1683489.570910+29.53086158*(zk1+1)+0.5);
   var mlunD=sou2 - sou1;var mlunD0=sou1 - sou0;
   var lunD1=jeJD-sou1+1;
  }else{
  if(jeJD>=1752148&&jeJD<1807784){
   var zk1=floor((jeJD-1752148.041079)/29.5305); /////85年-02-13起h=0.00049数据来自《寿星万年历》
   var sou0=floor(1752148.041079+29.53085097*(zk1-1)+0.5);
   var sou1=floor(1752148.041079+29.53085097*zk1+0.5);
   var sou2=floor(1752148.041079+29.53085097*(zk1+1)+0.5);
   var mlunD=sou2 - sou1;var mlunD0=sou1 - sou0;
   var lunD1=jeJD-sou1+1;
  }else{
  if(jeJD>=1807784&&jeJD<1883619){
   var zk1=floor((jeJD-1807665.420323)/29.5303);  /////237年-02-12起h=0.00033数据来自《寿星万年历》
   var sou0=floor(1807665.420323+29.53059851*(zk1-1)+0.5);
   var sou1=floor(1807665.420323+29.53059851*zk1+0.5);
   var sou2=floor(1807665.420323+29.53059851*(zk1+1)+0.5);
   var mlunD=sou2 - sou1;var mlunD0=sou1 - sou0;
   var lunD1=jeJD-sou1+1;
  }else{
  if(jeJD>=1883619&&jeJD<1907361){
   var zk1=floor((jeJD-1883618.114100)/29.5303);    /////445年-01-24起h=0.00030数据来自《寿星万年历》
   var sou0=floor(1883618.114100+29.53060000*(zk1-1)+0.5);
   var sou1=floor(1883618.114100+29.53060000*zk1+0.5);
   var sou2=floor(1883618.114100+29.53060000*(zk1+1)+0.5);
   var mlunD=sou2 - sou1;var mlunD0=sou1 - sou0;
   var lunD1=jeJD-sou1+1;
  }else{
  if(jeJD>=1907361&&jeJD<1936597){
   var zk1=floor((jeJD-1907360.704700)/29.5303); /////510年-01-26起h=0.00030;数据来自《寿星万年历》
   var sou0=floor(1907360.704700+29.53060000*(zk1-1)+0.5);
   var sou1=floor(1907360.704700+29.53060000*zk1+0.5);
   var sou2=floor(1907360.704700+29.53060000*(zk1+1)+0.5);
   var mlunD=sou2 - sou1;var mlunD0=sou1 - sou0;
   var lunD1=jeJD-sou1+1;
  }else{
  if(jeJD>=1936597&&jeJD<1939136){
   var zk1=floor((jeJD-1936596.224900)/29.5303);  /////590年-02-10起h=0.01010;数据来自《寿星万年历》
   var sou0=floor(1936596.224900+29.53060000*(zk1-1)+0.5);
   var sou1=floor(1936596.224900+29.53060000*zk1+0.5);
   var sou2=floor(1936596.224900+29.53060000*(zk1+1)+0.5);
   var mlunD=sou2 - sou1;var mlunD0=sou1 - sou0;
   var lunD1=jeJD-sou1+1;
  }else{
  if(jeJD>=1939136&&jeJD<1947169){
   var zk1=floor((jeJD-1939135.675300)/29.5303);   /////597年-02-10起h=0.00890;数据来自《寿星万年历》
   var sou0=floor(1939135.675300+29.53060000*(zk1-1)+0.5);
   var sou1=floor(1939135.675300+29.53060000*zk1+0.5);
   var sou2=floor(1939135.675300+29.53060000*(zk1+1)+0.5);
   var mlunD=sou2 - sou1;var mlunD0=sou1 - sou0;
   var lunD1=jeJD-sou1+1;
  }else{
  lunD1='';};};};};};};};};};
   if(lunD1>mlunD){
   lunD1 = 1;
  }
  if(mlunD0==29&&lunD1<1){
  lunD1 = 29;
   }
   if(mlunD0==30&&lunD1<1){
    lunD1 = lunD1+=30;
    }
  }else{
  lunD1='';
  for(var k=-1;k<=13;k+=1){  //朔
    var aa=aa0+0.507984293*k;
    var ab=ab0+6.73377553*k;
    var ac=ac0+6.818486628*k;
    var f1=f0+1.53058868*k+fc*sin(aa)-0.4068*sin(ab)+0.0021*sin(2*aa)+0.0161*sin(2*ab)+0.0104*sin(2*ac)-0.0074*sin(aa-ab)-0.0051*sin(aa+ab);
    var j=j0+28*k+f1;  //朔或望的等效标準天数及时刻
    var kk=souj(ms+floor(k)+15819); // 从校正数据表取出619年到1900年校正数据。
    var lunD0=jerD-(floor(j)+kk); //当前日距朔日的差值,同时对619年到1900年校正。
    if(k==floor(k)&&lunD0>=0&&lunD0<=29){
      lunD=lunD0+1;
   var syd0=floor(j0+28*k+f1);
    }
   } }
   ///对现行农历的校正(1901-2050)
    ///////1924.3.5-4.3 少一天
    if(y==1924&&((m==3&&d>=5)||(m==4&&d<=3))){
    var v= lunD++;
    if(lunD>30){
    var v= lunD-=30;
    }
   }
  //2018.11.7-12.6 -- 2057.9.28-10.27 - 2097.8.7-9.5  多一天
  if(y==2018&&((m==11&&d>=7)||(m==12&&d<=6))||y==2057&&((m==9&&d>=28)||(m==10&&d<=27))||y==2097&&((m==8&&d>=7)||(m==9&&d<=5))){
   var v= lunD--;
    if(lunD<1){
    var v= lunD+=30;
    }
  }
 
   var v=lunD;  //返回值
  if(jeJD>=1410952&&jeJD<1947169){
  v=lunD1;
  }
  return(v)
 }
[此贴子已经被作者于2008-12-16 14:36:37编辑过]


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
kmlch
  4楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:58 积分:3673 威望:0 精华:0 注册:2008/8/6 9:17:00
  发帖心情 Post By:2008/12/16 14:36:00


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
chwc
  5楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:603 积分:5315 威望:0 精华:4 注册:2008/4/21 19:06:00
  发帖心情 Post By:2008/12/16 14:43:00

多谢kmlch兄提供,但希望不会错。

 


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
chwc
  6楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:603 积分:5315 威望:0 精华:4 注册:2008/4/21 19:06:00
  发帖心情 Post By:2008/12/16 17:04:00

现在发的是《中国日历类》或来自《知来者》原作者的部份原创代码(因来自一家网站,有没有被改过我并不知道);

部份原代码如下:
//-------数学函数------//

function PI(){
  return Math.PI;
}

function sin(x){
  return Math.sin(x);
}

function cos(x){
  return Math.cos(x);
}

function abs(x){
  return Math.abs(x);
}

function floor(x){
  return Math.floor(x);
}

function round(x){
  return Math.round(x);
}

function tail(x){
  return x-floor(x);
}

function rem(x,w){  //广义求余
  return tail(x/w)*w;
}
//------农历及日月食------//
//角度函数
function ang(x,t,c1,t0,t2,t3){
  return tail(c1*x)*2*PI()+t0-t2*t*t-t3*t*t*t;
}
//节气函数
function S(y,n,pd){  //pd取值为0或1,分别表示平气和定气,该函数返回节气的D0值
  var juD=y*(365.2423112-6.4e-14*(y-100)*(y-100)-3.047e-8*(y-100))+15.218427*n+1721050.71301;//儒略日
  var tht=3e-4*y-0.372781384-0.2617913325*n;//角度
  var yrD=(1.945*sin(tht)-0.01206*sin(2*tht))*(1.048994-2.583e-5*y);//年差实均数
  var shuoD=-18e-4*sin(2.313908653*y-0.439822951-3.0443*n);//朔差实均数
  var vs=(pd)?(juD+yrD+shuoD-erD(y,1,0)-1721425):(juD-erD(y,1,0)-1721425);
  return vs;
}
//月干支
function mGz(y,m,d,h){

  var sN0=2*m-2;
  var sDt0=S(y,sN0,1);
  var sD0=antiD0(y,floor(sDt0));
  var sM0=floor(sD0/100);
  var sDate0=sD0%100+tail(sDt0);

  var sN1=2*m-1;
  var sDt1=S(y,sN1,1);
  var sD1=antiD0(y,floor(sDt1));
  var sM1=floor(sD1/100);
  var  sDate1=sD1%100+tail(sDt1);

  var sN2=2*m;
  var sDt2=S(y,sN2,1);
  var sD2=antiD0(y,floor(sDt2));
  var sM2=floor(sD2/100);
  var  sDate2=sD2%100+tail(sDt2);

  var sN3=2*m+1;
  if(sN3>24)
    sN3-=24;
  var sDt3=S(y,sN3,1);
  var sD3=antiD0(y,floor(sDt3));
  var sM3=floor(sD3/100);
  var  sDate3=sD3%100+tail(sDt3);

  if(sM0==m){
    sN2=sN1; sN1=sN0;
    sDt2=sDt1; sDt1=sDt0;
    sDate2=sDate1; sDate1=sDate0;
  }

  if(sM3==m){
    sN1=sN2; sN2=sN3;
    sDt1=sDt2; sDt2=sDt3;
    sDate1=sDate2; sDate2=sDate3;
  }

  sN1=rem(sN1-1,24)+1;
  sN2=rem(sN2-1,24)+1;

  var mL=D0(y,m,31)-D0(y,m,0);
  if(sDate2>mL)
    sDate2-=mL;

  var jqDate=(sN1%2==1)?sDate1:sDate2;  //"节气"(n为奇数)所在的阳历日数

  var gzM=((d+h/24)<jqDate)?(m-2):(m-1);   //干支月
  if(gzM<=0) 
    gzM+=12;
  return round(rem(12*gan(yGz(y,m,d))+gzM-10,60));
}

//返回农历日数及日月食信息的函数,如-324.57923415,负号表示闰月,百位3表示月偏食(2为月全食,1为日食0为无食),百位及十位表示日数,小数部分是朔望时刻(单位为天,若该天不朔或望则小数部分为零)

function lunDate(y,m,d){
  var t=(y-1899.5)/100;
  var ms=floor((y-1900)*12.3685);
  var rpi=180/PI();
  var zone=8;  //时区
  var f0=ang(ms,t,0,0.75933,2.172e-4,1.55e-7)+0.53058868*ms-8.37e-4*t+zone/24+0.5;
  var fc=0.1734-3.93e-4*t;
  var j0=693595+29*ms;
  var aa0=ang(ms,t,0.08084821133,359.2242/rpi,0.0000333/rpi,0.00000347/rpi);
  var ab0=ang(ms,t,7.171366127999999e-2,306.0253/rpi,-0.0107306/rpi,-0.00001236/rpi);
  var ac0=ang(ms,t,0.08519585128,21.2964/rpi,0.0016528/rpi,0.00000239/rpi);
  var leap=0;  //闰月数,0则不闰
  var ecli=0;  //日月食
  var lunD=-1;  //农历日数
  var shuoD=0;  //本阴历月的阴历朔日数
  var shuoT=0;  //本阴历月的朔时刻
  var wangD=0;  //本阴历月的望时刻
  var wangT=0;  //本阴历月的阴历望日数

  for(var k=-1;k<=13;k+=0.5){  //k=整数为朔,k=半整数为望
    var aa=aa0+0.507984293*k;
    var ab=ab0+6.73377553*k;
    var ac=ac0+6.818486628*k;
    var f1=f0+1.53058868*k+fc*sin(aa)-0.4068*sin(ab)+0.0021*sin(2*aa)+0.0161*sin(2*ab)+0.0104*sin(2*ac)-0.0074*sin(aa-ab)-0.0051*sin(aa+ab);
    var j=j0+28*k+f1;  //朔或望的等效标准天数及时刻

    //记录当前日期的j值
    var lunD0=erD(y,m,d)-floor(j);  //当前日距朔日的差值
    if(k==floor(k)&&lunD0>=0&&lunD0<=29){
      var k1=k;  //记录当前时间对应的k值
      shuoT=tail(j);
      lunD=lunD0+1;
    }
    if(k==(k1+0.5)){
      wangT=tail(j); 
      wangD=floor(j)-(erD(y,m,d)-lunD+1)+1;
    }
   
    //判断日月食
    if((lunD==1&&k==k1)||(lunD==wangD&&k==(k1+0.5))){
      if(abs(sin(ac))<=0.36){
        var s=5.19595-0.0048*cos(aa)+0.002*cos(2*aa)-0.3283*cos(ab)-0.006*cos(aa+ab)+0.0041*cos(aa-ab);
        var r=0.207*sin(aa)+0.0024*sin(2*aa)-0.039*sin(ab)+0.0115*sin(2*ab)-0.0073*sin(aa+ab)-0.0067*sin(aa-ab)+0.0117*sin(2*ac);
        var p=abs(s*sin(ac)+r*cos(ac));
        var q=0.0059+0.0046*cos(aa)-0.0182*cos(ab)+0.0004*cos(2*ab)-0.0005*cos(aa+ab);
        if(p-q<=1.5572){
          ecli=1;  //日食
          if(k!=floor(k)){
            if(p+q>=1.0129)
              ecli=3;  //月偏食
            else
              ecli=2;  //月全食
          }
        }
      }
     }
  }
//k循环结束

  var v=lunD;  //返回值
  if(v==1)
    v+=shuoT  //朔日则返回朔的时刻
  if(v==wangD)
    v+=wangT;  //望日则返回望的时刻
   
  return(v+ecli*100)
}


function lunMon(y,m,d){
  var lunDt=lunDate(y,m,d);
  var lunD=floor(lunDt-floor(lunDt/100)*100);  //农历日数
  var leapN=0;  //从当年到-849年的总闰月数
  for(var i=-849;i<=y;i++){
  if(leapMon(i)!='0')
    leapN++;
  }
  var MonN=round((erD(y,m,d)-erD(-849,1,21)-lunD)/29.530588)-leapN  //从当年到-849年的有效总月数(扣除闰月)

  if(y<=240) MonN++;
  if(y<=237) MonN--;
  if(y<24) MonN++;
  if(y<9) MonN--;
  if(y<=-255) MonN++;  
  if(y<=-256) MonN+=2;
  if(y<=-722) MonN++;  //历史上的修改月建

  var lunM=round(rem(MonN-3,12)+1);
  if(lunM==leapMon(y-1)&&m==1&&d<lunD)
    lunM*=-1;    //如果y-1年末是闰月且该月接到了y年,则y年年初也是闰月
  else{
    if(lunM==leapMon(y))
      lunM*=-1;
    else{
      if(lunM<leapMon(y)||m<lunM&&leapMon(y))
        lunM++;  //如果y年是闰月但当月未过闰月则前面多扣除了本年的闰月,这里应当补偿
      lunM=round(rem(lunM-1,12)+1);
    }
  }

  return lunM; 
}


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
chwc
  7楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:603 积分:5315 威望:0 精华:4 注册:2008/4/21 19:06:00
  发帖心情 Post By:2008/12/30 13:29:00

请大家多多指点!!!


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
chwc
  8楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:603 积分:5315 威望:0 精华:4 注册:2008/4/21 19:06:00
  发帖心情 Post By:2009/1/12 9:23:00

通知:本主题的后续是:公开《电脑医生万年历》源码,献给采用同样核心代码的人们做参考

连接:http://bbs.nongli.com/dispbbs.asp?boardID=2&ID=16589&page=1


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
ldlcau
  9楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:159 积分:583 威望:0 精华:1 注册:2008/9/3 16:55:00
  发帖心情 Post By:2009/1/16 15:32:00

谢谢,有需要时参考一下图片点击可在新窗口打开查看

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
linkerson
  10楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:89 积分:1001 威望:0 精华:0 注册:2009/2/22 21:16:00
  发帖心情 Post By:2009/2/24 17:40:00

我正开始学习历法知识,这个帖子很有参考价值,谢谢。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
总数 14 1 2 下一页

返回版面帖子列表

[分享]献给那些和我采用同样核心代码的人们做参考。








签名