php日历插件的制作方法,求思路

http://pan.baidu.com/s/1qWx8EDm 这是别人的代码; 一直在研磨生成日历的思路!
==================能翻译一下这个循环输出的规则吗?==================
<? $l = $lasttotaldays - $firstday; // 过去的天数- 这月对应的星期几 = ? 上个月的的最后几天 for($j = 0;$j < $firstday; $j++){ $lt = $j+$l+1; echo '<li class="nodays">'.$lt.'</li>';//显示上个月的符合条件的每一天 } while($k <= $totaldays){ echo '<li>'.$k.'</li>'; //输出当月的每一天 $j++; $k++; } while($j % 7 != 0){ $nd = $j - ($totaldays + $firstday) + 1; echo '<li class="nodays">'.$nd.'</li>'; //输出下个月符合条件的每一天 $j++; } ?>
====================================================================

上一个月 + 这个月 + 下个月 混排

上一个月 的最后那几天要怎么求出来 ?
这个月的天数 求出来
下个月的 前几天 怎么求出来 ?

1)$l = $lasttotaldays - $firstday; 这个帮忙翻译下
1]$l 代表什么?
2]$lt 上个月的在最后一星期? ( $lt = $j+$l+1; 帮忙翻译一下这段求的思路)
2]$k 当月的天数
3]$nd 下个月的第一星期; ($nd = $j - ($totaldays + $firstday) + 1) 这是什么思路!

2)for(){}while(){}while(){} 是什么功能的语法?==>条件输出?

=============求大牛科普呀===========
1)求出这个月第一天对应星期几
2)怎么求出上个月最后一星期符合条件的有几天

3)下个月的第一星期符合条件的日期 = (5x7)-(上个月符合条件的几天 + 这个月的天数?)

我是数学渣渣 。 求计算思路

<?php  header("content-type: text/html; charset=utf-8"); ?>
<?php  ?>
<table class="table table-striped table-hover">
<?php
//注:32位机器或者32位PHP版本可能只能计算到2038年之前的月份
//若没有GET方法传入参数,则使用服务器本地当前日期;否则使用传入的参数,方便跳转月份
$year=date("Y");
$month=date("n");
$alert="<div class='alert alert-warning'>输入的日期格式有误!</div>";
$alertYear="<div class='alert alert-warning'>无法计算1901年以前的日历!</div>";
if($_REQUEST) {
$year=$_REQUEST["year"];
$month=$_REQUEST["month"];
}
if(!in_array($month, array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"))) { echo $alert; exit;}
if($year<1901){ echo $alertYear; exit;}
?>
<caption><h4><?php echo $year; ?>&nbsp;年&nbsp;<?php echo $month; ?>&nbsp;月</h4></caption>
<?php 
//计算当前日期,当月天数,获得星期数据,将默认星期天数字0改为7,方便处理循环
$today=date("j");
$days=date("t", strtotime("$year-$month-01"));
$week=date("w", strtotime("$year-$month-01"));
if($week==0) {$week=7;}
  ?>
  <tr>
  <th>一</th>
  <th>二</th>
  <th>三</th>
  <th>四</th>
  <th>五</th>
  <th>六</th>
  <th>日</th>
  </tr>
  <tr>
  <?php
  //插入空白无日期区域,循环次数为当前月第一天的星期数-1
  for($space=1; $space<$week; $space++) {
  echo "<td>-</td>";
  }
  //循环插入数据,当到达周日时换行输出;标记当前日期为红色
  for($day=1; $day<=$days; $day++) {
  if(($day+$week-1)%7===0) {
  if($day==$today && $year==date("Y") && $month==date("n")) {
echo "<td style='background-color: pink;'>$day</td>";
  echo "</tr>";
  echo "<tr>";
  }
  echo "<td>$day</td>";
  echo "</tr>";
  echo "<tr>";
  }else {
  if($day==$today && $year==date("Y") && $month==date("n")) {
echo "<td style='background-color: pink;'>$day</td>";
  } else {
  echo "<td>$day</td>";
  }
  }
  }
  //尾部补足
  $spacing=36-$days-$week<0?43-$days-$week:36-$days-$week;
  for($footer=1; $footer<=$spacing; $footer++) {
  echo "<td>-</td>";
  }
   ?>
  </tr>
 </table>

我以前写的,你随意看看~~

追问

我觉得上个月的时间计算比较难……

1)怎么判断上个月的位置应该空出多少格~
2)判断上个月那一天对应着星期一……

能提供思路的话不胜感激

追答

个人思路啊,不管是上个月还是下个月,首先要知道具体的月份,比如2015年1月上个月应该是2014年12月,这个地方需要一个判断,空多少格只要知道这个月第一天是星期几就可以了,用date("w")就可以判断

温馨提示:答案为网友推荐,仅供参考