PHP日历

PHP日历

<?PHP
/**//********************************************
# Author:  Daniel Chen
# version: 1.0
# QQ:      382399212
# MSN:     [email]daniel_chnn@hotmail.com[/email]
# Email:   [email]antplus@163.com[/email]
********************************************/
class ap_kdr
{
   function n_days($month,$year)
   {
       if($month==4||$month==6||$month==9||$month==11)$n_days = 30;
       else if($month==2)
       {
           if((($year%4 == 0)&&($year%100!= 0))||($year%400==0))$n_days=29;
           else $n_days=28;
       }
       else $n_days=31;

       return $n_days;
   }

   function ka_rows($n_days,$n_week,$curr_date)
   {
       for($i=0;$i<7;$i++)
       {
           if($curr_date == $n_week[$i])
           $add_days = $i;
       }
       if(($n_days + $add_days)%7==0) $rows = ($n_days + $add_days)/7;
       else $rows = (int)(($n_days + $add_days)/7)+1;

       return $rows;
   }

   function kalendar($month,$year)
   {
       if($year=="")$year=date(''Y'',time()

       if($month=="")$month=date(''m'',time()

       if($month>12)
       {
           $month=1;
           $year++;
       }
       if($month<1)
       {
           $month=12;
           $year--;
       }


       $show_month=date(''M'',mktime(0,0,0,$month,1,$year)



       //-----
       $n_days = $this->n_days($month,$year


       $n_week =array(''Sun'
'Mon'
'Tue'
'Wed'
'Thu'
'Fri'
'Sat''

       $curr_date = date(''D'',mktime(0,0,0,$month,1,$year)

       static $front_break = 0;

       echo "<table><tr><td colspan=7 class=kal-title>".$show_month.".".$year."</td></tr><tr>";
       for($t1=0; $t1<7; $t1++)
       {
           echo "<td class=kal-td><strong>$n_week[$t1].</strong></td>";
       }
       echo "</tr>";
       for($row = 0; $row<$this->ka_rows($n_days,$n_week,$curr_date
$row++)
       {
           echo "<tr>";
           for($list=0;$list<7;$list++)
           {
               $front_break++;
               if($front_break<7&&$curr_date==$n_week[$list])
               {
                   $day = 0;
                   $front_break=8;
               }
               if($front_break<8&&$curr_date!=$n_week[$list])
               {
                   echo "<td class=kal-td>&nbsp;</td>";
                   continue;
               }
               $day++;
               if($day>$n_days)
               {
                   echo "<td class=kal-td>&nbsp;</td>";
                   continue;
               }
               echo "<td class=kal-td>$day</td>";
           }
           echo "</tr>";
       }
       echo "<tr><td colspan=7 class=kal-foot>";
       echo "<a href=".$_SERVER[''PHP_SELF'']."?month=".($month-1)."&year=".$year."><< previous month</a> | ";
       echo "<a href=".$_SERVER[''PHP_SELF'']."?month=".($month+1)."&year=".$year.">next month >></a>";
       echo "</td></tr></table>";
   }
}
?>



使用范例:


<?PHP
require "ap_kdr.php";

$ap_kdr = new ap_kdr(


$ap_kdr->kalendar($_GET[''month''],$_GET[''year'']

?>
<style type="text/css">
<!--
.kal-td {
   color: #333333;
   font-family: Arial;
   font-size: 9pt;
   background-color: #FFD7C4;
   width: 60px;
   height:30px;
   text-align: center;
}
.kal-title{
   color: #333333;
   font-family: Arial;
   font-size: 9pt;
   background-color: #FFB384;
   height:30px;
   text-align: center;
}
.kal-foot{
   color: #333333;
   font-family: Arial;
   font-size: 9pt;
   height:30px;
   text-align: center;
}
-->
</style>
如果您觉得我的文章有帮助,请随意赞赏!

*发表评论

用QQ账号登录  请登录后发表评论