+ -
当前位置:首页 → 问答吧 → 一个简单的日历类

一个简单的日历类

时间:2007-03-31

来源:互联网

估计写blog什么的能用上。
<?php
class calendar{
var $month;
var $year;
  function __construct(){
$this->month =date("m",mktime());  //默认为当前月
$this->year =date("Y",mktime());
  }
  function build_HTML(){
echo   "<table width='200' border='0' cellpadding='0' cellspacing='1' bgcolor='#CCCCCC' style='font-size:12px;' >
  <tr align='center'>
    <td height='25' bgcolor='#f4f4f4'>周日</td>
    <td height='25' bgcolor='#f4f4f4'>周一</td>
    <td height='25' bgcolor='#f4f4f4'>周二</td>
    <td height='25' bgcolor='#f4f4f4'>周三</td>
    <td height='25' bgcolor='#f4f4f4'>周四</td>
    <td height='25' bgcolor='#f4f4fF'>周五</td>
    <td height='25' bgcolor='#f4f4f4'>周六</td>
  </tr>
  <tr align='center' >";
//第一行找到每月一日的位置前面格都为空
date_default_timezone_set("Asia/Shanghai");
$month_begin_day= date("w",mktime(0,0,0,$this->month,1,$this->year));
$j=1;
for($i=1;$i<=$month_begin_day;$i++){
echo "<td height=25 bgcolor=white> </td>";
}
for(;$i<=7;$i++)
{
  echo "<td height=25 bgcolor=white>$j</td>";
$j++;
}
//完毕
echo "</tr>";  
  $month_day =date("t",mktime(0,0,0,$this->month,1,$this->year));

for($n=1;$n<intval($month_day/7)+1;$n++)
{
     echo "<tr align=center>";
   while ($i<($n+1)*7+1) {
    if($j<=$month_day){
        echo "<td height=25 bgcolor=white>$j</td>";}
        else {  echo "<td height=25 bgcolor=white> </td>"; }
$i++;
$j++;
     }
  echo "</tr>";
  }
echo  "</table>" ;
   
  }
}
?>

使用方法
<?
<?php
include("class_calendar.php");
$calendar = new calendar();
$calendar->year=2008;
$calendar->month =2;
$calendar->build_HTML();
?>
?>

作者: morsth   发布时间: 2007-03-30

:) 支持一下

作者: 默默   发布时间: 2007-04-01

很简洁的日历类,不过有个地方考虑的不周到:

仅仅用:
$month_day =date("t",mktime(0,0,0,$this->month,1,$this->year));
intval($month_day/7)+1;
这两句代码显示剩余的行数是有问题的,例如如果2月28天而正好1号是周日,那么就会多出一个空行;
同样如果30或者31天的月份,1日从周六开始,日历就会少出一行,出现一个月日期显示少一两天的情况。
这问题解决,这个类扩展显示周数才得以可能。

原因找到了,修改很容易:P

作者: suiphone   发布时间: 2007-04-05

呵呵,谢谢楼上指教。

作者: morsth   发布时间: 2007-04-06

不错!
for($n=1;$n<intval($month_day/7)+1;$n++)
把intval($month_day/7)+1拿出来单独计算,养成良好的编程习惯。:D

作者: PHPChina   发布时间: 2007-04-06

楼上的,这一段是管什么的.

作者: dragonbase   发布时间: 2007-08-26

支持

作者: 逆雪寒   发布时间: 2007-08-26

热门下载

更多