复制到记事本上,在php环境下运行就可以了.始终有个bug是在2006年,遇到2月,4月,7月,12月就少了几天.不知是哪里的逻辑出错了.有的月份就没事有的月份就少了几天.
请大家帮忙指出逻辑错误.我写的已经晕头转向了.实在看不出哪里逻辑有问题.
谢谢了

解决方案 »

  1.   

    漏洞百出,很多月份有死循环
    你要重新换一种思路while($daynum < $Maxday_count)这个逻辑绝对是错的
    因为$Maxday_count总是31,但$daynum某些月份内循环<31就break了,所以外循环就死转了整个思路是严重的失误!!!
    我奇怪你用date()去判断星期几,为何不用date()去判断大小月和闰月呢???
      

  2.   

    $Maxday = range(1, date('t', strtotime("$Year-$Month-01")));去掉判断月天数的代码,再试
      

  3.   

    为什么不用date函数来判断日期呢?非要自己写???
      

  4.   

    我改动了两个地方,BUG不见了。
    其一:外层循环的条件while($daynum < $Maxday_count)改为while($colnum < $Maxday_count)
    其二:内层循环的条件if($daynum % 7 == 0)改为
    if(($daynum % 7 == 0)||($colnum == $Maxday_count))
      

  5.   

    对原程序中处理增减月份的部分进行了润色,使之能够实现:连带年份的变化。
    代码如下:
    <td colspan=3 align=center>
    <a href="calendar.php?Year=<? if($Month==1) echo $Year-1; else echo $Year;?>
    &Month=<? if($Month==1) echo "12"; elseif($Month>10) echo $Month-1; else echo "0".($Month-1);?>" 
    onClick="javascript:document.linked.submit();" name="Month"><<</a>&nbsp;
    <?=$Month;?>&nbsp;
    <a href="calendar.php?Year=<? if($Month==12) echo $Year+1; else echo $Year;?>
    &Month=<? if($Month==12) echo "01"; elseif($Month>=9) echo $Month+1; else echo "0".($Month+1);?>" 
    onClick="javascript:document.linked.submit();" name="Month">>></a></td>