我找到一个网站上很流行的农历万年历程序,可是运行却出现错误,2008年是戊子年,可是程序中对年份名称好象没有戊子年的定义,程序运行出现丙戌年,还有就是农历的日期也是错误的,本来应该是农历四月十八日,程序运行出现的是六月十八日,请各位大哥大姐帮忙分析一下原因,帮忙修改修改。谢谢!
var bsYear; 
var bsDate; 
var bsWeek; 
var arrLen=8; //数组长度 
var sValue=0; //当年的秒数 
var dayiy=0; //当年第几天 
var miy=0; //月份的下标 
var iyear=0; //年份标记 
var dayim=0; //当月第几天 
var spd=86400; //每天的秒数 var year1999="30;29;29;30;29;29;30;29;30;30;30;29"; //354 
var year2000="30;30;29;29;30;29;29;30;29;30;30;29"; //354 
var year2001="30;30;29;30;29;30;29;29;30;29;30;29;30"; //384 
var year2002="30;30;29;30;29;30;29;29;30;29;30;29"; //354 
var year2003="30;30;29;30;30;29;30;29;29;30;29;30"; //355 
var year2004="29;30;29;30;30;29;30;29;30;29;30;29;30"; //384 
var year2005="29;30;29;30;29;30;30;29;30;29;30;29"; //354 
var year2006="30;29;30;29;30;30;29;29;30;30;29;29;30"; var month1999="正月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月" 
var month2001="正月;二月;三月;四月;闰四月;五月;六月;七月;八月;九月;十月;十一月;十二月" 
var month2004="正月;二月;闰二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月" 
var month2006="正月;二月;三月;四月;五月;六月;七月;闰七月;八月;九月;十月;十一月;十二月" 
var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十"; var Ys=new Array(arrLen); 
Ys[0]=919094400;Ys[1]=949680000;Ys[2]=980265600; 
Ys[3]=1013443200;Ys[4]=1044028800;Ys[5]=1074700800; 
Ys[6]=1107878400;Ys[7]=1138464000; var Yn=new Array(arrLen); //农历年的名称 
Yn[0]="己卯年";Yn[1]="庚辰年";Yn[2]="辛巳年"; 
Yn[3]="壬午年";Yn[4]="癸未年";Yn[5]="甲申年"; 
Yn[6]="乙酉年";Yn[7]="丙戌年"; 
var D=new Date(); 
var yy=D.getYear(); 
var mm=D.getMonth()+1; 
var dd=D.getDate(); 
var ww=D.getDay(); 
if (ww==0) ww="<font color=RED>星期日</font>"; 
if (ww==1) ww="星期一"; 
if (ww==2) ww="星期二"; 
if (ww==3) ww="星期三"; 
if (ww==4) ww="星期四"; 
if (ww==5) ww="星期五"; 
if (ww==6) ww="<font color=RED>星期六</font>"; 
ww=ww; 
var ss=parseInt(D.getTime() / 1000); 
if (yy<100) yy="19"+yy; for (i=0;i<arrLen;i++) 
if (ss>=Ys[i]){ 
iyear=i; 
sValue=ss-Ys[i]; //当年的秒数 

dayiy=parseInt(sValue/spd)+1; //当年的天数 var dpm=year1999; 
if (iyear==1) dpm=year2000; 
if (iyear==2) dpm=year2001; 
if (iyear==3) dpm=year2002; 
if (iyear==4) dpm=year2003; 
if (iyear==5) dpm=year2004; 
if (iyear==6) dpm=year2005; 
if (iyear==7) dpm=year2006; 
dpm=dpm.split(";"); var Mn=month1999; 
if (iyear==2) Mn=month2001; 
if (iyear==5) Mn=month2004; 
if (iyear==7) Mn=month2006; 
Mn=Mn.split(";"); var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十"; 
Dn=Dn.split(";"); dayim=dayiy; var total=new Array(13); 
total[0]=parseInt(dpm[0]); 
for (i=1;i<dpm.length-1;i++) total[i]=parseInt(dpm[i])+total[i-1]; 
for (i=dpm.length-1;i>0;i--) 
if (dayim>total[i-1]){ 
dayim=dayim-total[i-1]; 
miy=i; 

bsWeek=ww; 
bsDate=yy+"年"+mm+"月"; 
bsDate2=dd+"日"; 
bsYear="农历"+Yn[iyear]; 
bsYear2=Mn[miy]+Dn[dayim-1]; 
if (ss>=Ys[7]||ss<Ys[0]) bsYear=Yn[7]; 
function CAL(){ 
//document.write("<table border='1' cellspacing='3' width='105' bordercolor='#000000' bgcolor='#FFFFFF' height='110' cellpadding='2'"); 
//document.write("<tr><td align='center'><b><font color=#008040>"+bsDate+"</font><br><font face='Arial' size='6' color=#FF8040>"+bsDate2+"</font><br><font color=#008040><span style='FONT-SIZE: 10.5pt'>"); 
//document.write(bsWeek+"</span><br>"+"<br></b><font color=#9B4E00>"); 
//document.write(bsYear+"<br>"+bsYear2+"</td></tr></table>"); 
document.write("<font color=#ffffff>" + bsDate + bsDate2 + " " + ww + "</font><br><font color=#ffffff>" + bsYear + bsYear2+ "</font>");
} CAL();

解决方案 »

  1.   

     我找到一个网站上很流行的农历万年历程序,可是运行却出现错误,2008年是戊子年,可是程序中对年份名称好象没有戊子年的定义,程序运行出现丙戌年,还有就是农历的日期也是错误的,本来阳历2008年5月22日应该是农历四月十八日,程序运行出现的是六月十八日,请各位大哥大姐帮忙分析一下原因,帮忙修改修改。谢谢! 
    var bsYear;  
    var bsDate;  
    var bsWeek;  
    var arrLen=8; //数组长度  
    var sValue=0; //当年的秒数  
    var dayiy=0; //当年第几天  
    var miy=0; //月份的下标  
    var iyear=0; //年份标记  
    var dayim=0; //当月第几天  
    var spd=86400; //每天的秒数  var year1999="30;29;29;30;29;29;30;29;30;30;30;29"; //354  
    var year2000="30;30;29;29;30;29;29;30;29;30;30;29"; //354  
    var year2001="30;30;29;30;29;30;29;29;30;29;30;29;30"; //384  
    var year2002="30;30;29;30;29;30;29;29;30;29;30;29"; //354  
    var year2003="30;30;29;30;30;29;30;29;29;30;29;30"; //355  
    var year2004="29;30;29;30;30;29;30;29;30;29;30;29;30"; //384  
    var year2005="29;30;29;30;29;30;30;29;30;29;30;29"; //354  
    var year2006="30;29;30;29;30;30;29;29;30;30;29;29;30";  var month1999="正月;二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月"  
    var month2001="正月;二月;三月;四月;闰四月;五月;六月;七月;八月;九月;十月;十一月;十二月"  
    var month2004="正月;二月;闰二月;三月;四月;五月;六月;七月;八月;九月;十月;十一月;十二月"  
    var month2006="正月;二月;三月;四月;五月;六月;七月;闰七月;八月;九月;十月;十一月;十二月"  
    var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十";  var Ys=new Array(arrLen);  
    Ys[0]=919094400;Ys[1]=949680000;Ys[2]=980265600;  
    Ys[3]=1013443200;Ys[4]=1044028800;Ys[5]=1074700800;  
    Ys[6]=1107878400;Ys[7]=1138464000;  var Yn=new Array(arrLen); //农历年的名称  
    Yn[0]="己卯年";Yn[1]="庚辰年";Yn[2]="辛巳年";  
    Yn[3]="壬午年";Yn[4]="癸未年";Yn[5]="甲申年";  
    Yn[6]="乙酉年";Yn[7]="丙戌年";  
    var D=new Date();  
    var yy=D.getYear();  
    var mm=D.getMonth()+1;  
    var dd=D.getDate();  
    var ww=D.getDay();  
    if (ww==0) ww=" <font color=RED>星期日 </font>";  
    if (ww==1) ww="星期一";  
    if (ww==2) ww="星期二";  
    if (ww==3) ww="星期三";  
    if (ww==4) ww="星期四";  
    if (ww==5) ww="星期五";  
    if (ww==6) ww=" <font color=RED>星期六 </font>";  
    ww=ww;  
    var ss=parseInt(D.getTime() / 1000);  
    if (yy <100) yy="19"+yy;  for (i=0;i <arrLen;i++)  
    if (ss>=Ys[i]){  
    iyear=i;  
    sValue=ss-Ys[i]; //当年的秒数  
    }  
    dayiy=parseInt(sValue/spd)+1; //当年的天数  var dpm=year1999;  
    if (iyear==1) dpm=year2000;  
    if (iyear==2) dpm=year2001;  
    if (iyear==3) dpm=year2002;  
    if (iyear==4) dpm=year2003;  
    if (iyear==5) dpm=year2004;  
    if (iyear==6) dpm=year2005;  
    if (iyear==7) dpm=year2006;  
    dpm=dpm.split(";");  var Mn=month1999;  
    if (iyear==2) Mn=month2001;  
    if (iyear==5) Mn=month2004;  
    if (iyear==7) Mn=month2006;  
    Mn=Mn.split(";");  var Dn="初一;初二;初三;初四;初五;初六;初七;初八;初九;初十;十一;十二;十三;十四;十五;十六;十七;十八;十九;二十;廿一;廿二;廿三;廿四;廿五;廿六;廿七;廿八;廿九;三十";  
    Dn=Dn.split(";");  dayim=dayiy;  var total=new Array(13);  
    total[0]=parseInt(dpm[0]);  
    for (i=1;i <dpm.length-1;i++) total[i]=parseInt(dpm[i])+total[i-1];  
    for (i=dpm.length-1;i>0;i--)  
    if (dayim>total[i-1]){  
    dayim=dayim-total[i-1];  
    miy=i;  
    }  
    bsWeek=ww;  
    bsDate=yy+"年"+mm+"月";  
    bsDate2=dd+"日";  
    bsYear="农历"+Yn[iyear];  
    bsYear2=Mn[miy]+Dn[dayim-1];  
    if (ss>=Ys[7] ¦ ¦ss <Ys[0]) bsYear=Yn[7];  
    function CAL(){  
    //document.write(" <table border='1' cellspacing='3' width='105' bordercolor='#000000' bgcolor='#FFFFFF' height='110' cellpadding='2'");  
    //document.write(" <tr> <td align='center'> <b> <font color=#008040>"+bsDate+" </font> <br> <font face='Arial' size='6' color=#FF8040>"+bsDate2+" </font> <br> <font color=#008040> <span style='FONT-SIZE: 10.5pt'>");  
    //document.write(bsWeek+" </span> <br>"+" <br> </b> <font color=#9B4E00>");  
    //document.write(bsYear+" <br>"+bsYear2+" </td> </tr> </table>");  
    document.write(" <font color=#ffffff>" + bsDate + bsDate2 + " " + ww + " </font> <br> <font color=#ffffff>" + bsYear + bsYear2+ " </font>"); 
    }  CAL();
      

  2.   

    if (ss>=Ys[7] ¦ ¦ss  <Ys[0]) bsYear=Yn[7]; 是||这个