万年历设计思想及示例

<?
 //如果未传递参数,则取当前日期
 if(!$selectedDay)
 {
  $selectedDay=date('d');
 }
 if(!$selectedMonth)
 {
  $selectedMonth=date('m');
 }
 if(!$selectedYear)
 {
  $selectedYear=date('Y');
 }
 
 //获得指定月份的第一天是星期几?
 $firstday=date('w',mktime(0,0,0,$selectedMonth,1,$selectedYear));
 
 $lastday=31;
 //have to perform to test from 31 backwards using this to see which is the last day of the month 从31天从始向后做循环,找出哪一天是这个月的最后一天
 do
 {
  //注意控制循环条件,先获得月份的第一天,再获得中间测试天
  
  //返回指定或默认的年月的第一天所在的月份值
  $monthOrig=date('m',mktime(0,0,0,$selectedMonth,1,$selectedYear));
  
  //返回$lastday所在的年月的月份值
  $monthTest=date('m',mktime(0,0,0,$selectedMonth,$lastday,$selectedYear));
  
  //循环执行直至第一天所在的月份值=最后一天所在的月份值,$lastday就是这个月所包含的天数
  if($monthTest!=$monthOrig)
  {
   $lastday-=1;
  } 
 }while ($monthTest!=$monthOrig);
 
 //define the month Name
 //例:echo date('Y-F-jS');输出为2007-February-6th
 $monthName=date('F',mktime(0,0,0,$selectedMonth,1,$selectedYear));
 
 //if语句判断环境变量中是否定义了$debugging_set常量
 if($DEBUGGIN_SET)
 {
  print("<p>1st day of the 1st week of $selectedMonth $selectedYear is $firstday/n<p>");
  print("The last day of $selectedMonth $selectedYear is $lastday/n<p>");
 }
 
 //定义星期的显示方式
 $days[0]='Sun';
 $days[1]='Mon';
 $days[2]='Tue';
 $days[3]='Wed';
 $days[4]='Thu';
 $days[5]='Fri';
 $days[6]='Sat';
 
 //标识天数在表格中应该显示的位置
 $dayRow=0;
 
 //生成表头,显示出指定的年份和月份
 print("<table bgcolor=/"#FFFFFF/">");
 print("<caption valign=/"center/"><b>$monthName $selectedYear</b></caption>>");
 
 //打印列名
 print("<tr>/n");
 for($i=0;$i<7;$i++)
 {
  print("<td width=10%>$days[$i]</td>/n");
 }
 print("</tr>/n");
 
 print("<tr>/n");
 //标识第1天在表格中应该显示的位置
 while($dayRow<$firstday)
 {
  print("<td><!--This day in the last month--></td>");
  $dayRow++;
 }
 
 //变量$day用以存储应显示的天数,初始值为0。
 $day=0;
 
 //为每个日期添加链接,设置超链接
 if($frametarget)
 {
  $targetString='target' . $frametarget;
 }
 else
 {
  $targetString='Welcome.htm';
 }
 
 while($day<$lastday)
 {
  //判断变量$dayRow可否被整除
  if(($dayRow%7)==0)
  {
   print("</tr>/n<tr>/n");
  }
  $day++;
  print("<td><a href=$targetString>$day</a></td>");
  $dayRow++;
 }
 print("/n</tr>/n</table>/n");
?>

<br>
<form method="get" action="BigDate.php">
 <div align="center">
  <?
   if($selectedMonth==12)
   {
  ?>
    <a href="BigDate.php?selectedMonth=11&selectedYear=<?print($selectedYear);?>">前一个月</a>
    <a href="BigDate.php?selectedMonth=1&selectedYear=<?$selectedYear++;print($selectedYear);?>">后一个月</a>
  <?
   }
   else
   {
    if($selectedMonth==1)
    {
  ?>
     <a href="BigDate.php?selectedMonth=12&selectedYear=<?$selectedYear--;print($selectedYear);?>">前一个月</a>
     <a href="BigDate.php?selectedMonth=2&selectedYear=<?$selectedYear++;print($selectedYear);?>">后一个月</a>
  <?
    }
    else
    {
  ?>
     <a href="BigDate.php?selectedMonth=<?$selectedMonth--;print($selectedMonth);?>&selectedYear=<?print($selectedYear);?>">前一个月</a>
     <a href="BigDate.php?selectedMonth=<?$selectedMonth+=1;print($selectedMonth);?>$selectedYear=<?print($selectedYear);?>">后一个月</a>    
  <?
    }
   }
  ?>
  <br><br>
  年<input type="text" name="selectedYear" size="6">
  月<input type="text" name="selectedMonth" size="3">
  <input type="submit" name="submit" value="查询">
 </div>
</form>
</br>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值