php输出日历的程序

最近开发需求中需要输出一个日历,由于该日历和数据库中的数据扯有太多关系。于是没有选择比较常见的用js生成的日历,而是用php输出了一个日历表格。ok,下面将如何用php输出日历的程序和大家分享一下。

php输出的日历效果如下图:

php输出日历的程序

具体代码如下:

  1. <?php 
  2. /* 
  3. * php 输出日历程序 
  4. */  
  5. header("Content-type: text/html;charset=utf-8"); 
  6. $year=(!isset($_GET['year'])||$_GET['year']=="")?date("Y"):$_GET['year']; 
  7. $month=(!isset($_GET['month'])||$_GET['month']=="")?date("n"):$_GET['month']; 
  8. $curUrl=$_SERVER['PHP_SELF']; 
  9.  
  10. if($year<1971){ 
  11.     echo "出错!"
  12.     echo "<BR>"
  13.     echo "<a href=",$curUrl,">Back</a>"
  14.     exit(); 
  15. ?>  
  16. <table width="200" border="1" cellspacing="0" cellpadding="0" bordercolor="#E7E7E7" style="font-size:12px;" align="center">  
  17. <tr align="center"><td colspan="2">  
  18. <?php  
  19. //<-------当月份超出1至12时的处理;开始------->  
  20. if($month<1){ 
  21.     $month=12; 
  22.     $year-=1; 
  23. if($month>12){ 
  24.     $month=1; 
  25.     $year+=1; 
  26. //<-------当月份超出1至12时的处理;结束------->  
  27. //<---------上一年,下一年,上月,下月的连接处理及输出;开始--------->  
  28. echo "<a href=",$curUrl,"?year=".($year-1)."&month=".$month."><<</a>年<a href=",$curUrl,"?year=".($year+1)."&month=".$month.">>></a>"
  29. ?>  
  30. </td><td colspan="3"><?php echo $year."年".$month."月";?>  
  31. </td><td colspan="2">  
  32. <?php  
  33. echo "<a href=",$curUrl,"?month=".($month-1)."&year=".$year."><<</a>月<a href=",$curUrl,"?month=".($month+1)."&year=".$year.">>></a>"
  34. //<--------上一年,下一年,上月,下月的连接处理及输出;结束--------->  
  35. ?></td></tr>  
  36. <tr align=center><td><font color="red">日</font></td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr><tr>  
  37. <?php  
  38. $d=date("d"); 
  39. $FirstDay=date("w",mktime(0,0,0,$month,1,$year));//取得任何一个月的一号是星期几,用于计算一号是由表格的第几格开始 
  40. $bgtoday=date("d"); 
  41. function font_color($month,$today,$year){//用于计算星期天的字体颜色 
  42.     $sunday=date("w",mktime(0,0,0,$month,$today,$year)); 
  43.     if($sunday=="0"){ 
  44.         $FontColor="red"
  45.     }else
  46.         $FontColor="black"
  47.     } 
  48.     return $FontColor
  49. function bgcolor($month,$bgtoday,$today_i,$year){//用于计算当日的背景颜色 
  50.     $show_today=date("d",mktime(0,0,0,$month,$today_i,$year)); 
  51.     $sys_today=date("d",mktime(0,0,0,$month,$bgtoday,$year)); 
  52.     if($show_today==$sys_today){ 
  53.     $bgcolor="bgcolor=#6699FF"
  54.     }else
  55.     $bgcolor=""
  56.     } 
  57.     return $bgcolor
  58. function font_style($month,$today,$year){//用于计算星期天的字体风格 
  59.     $sunday=date("w",mktime(0,0,0,$month,$today,$year)); 
  60.     if($sunday=="0"){ 
  61.         $FontStyle="<strong>"
  62.     }else
  63.         $FontStyle=""
  64.     } 
  65.     return $FontStyle
  66. for($i=0;$i<=$FirstDay;$i++){//此for用于输出某个月的一号位置 
  67.     for($i;$i<$FirstDay;$i++){ 
  68.         echo "<td align=center> </td>\n"
  69.     } 
  70.     if($i==$FirstDay){ 
  71.         echo "<td align=center ".bgcolor($month,$bgtoday,1,$year)."><font color=".font_color($month,1,$year).">".font_style($month,1,$year)."1</font></td>\n"
  72.         if($FirstDay==6){//判断1号是否星期六 
  73.             echo "</tr>"
  74.         } 
  75.     } 
  76. $countMonth=date("t",mktime(0,0,0,$month,1,$year));//某月的总天数  
  77. for($i=2;$i<=$countMonth;$i++){//输出由1号定位,随后2号直至月尾的所有号数 
  78.     echo "<td align=center ".bgcolor($month,$bgtoday,$i,$year)."><font color=".font_color($month,$i,$year).">".font_style($month,$i,$year)."$i</font></td>\n"
  79.     if(date("w",mktime(0,0,0,$month,$i,$year))==6){//判断该日是否星期六 
  80.         echo "</tr>\n"
  81.     } 
  82. ?>  
  83. </table> 

转载请注明:代码家园 » php输出日历的程序

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)