PHP创建日历,一个使用方便的类文件

<?php

//创建一个日期类
class  Calendar
{
     var  $startDay =0;
     var  $startMonth =1;
     var  $dayNames = array ( "<font color='red' face='courier new'>Sunday</font>" ,
        "<font color='green' face='courier new'>Monday" ,
        "<font color='green' face='courier new'>Tuesday" ,
         "<font color='green' face='courier new'>Wednesday" ,
         "<font color='green' face='courier new'>Thursday" ,
        "<font color='green' face='courier new'>Friday" ,
         "<font color='red' face='courier new'>Saturday" );
     var  $monthNames = array ( "<font color='maroon' size=4 face='courier new'><b>January</b></font>" ,
       "<font color='maroon' size=4 face='courier new'><b>February</b></font>" ,
     "<font color='maroon' size=4 face='courier new'><b>March</b></font>" ,
     "<font color='maroon' size=4 face='courier new'><b>April</b></font>" ,
     "<font color='maroon' size=4 face='courier new'><b>May</b></font>" ,
     "<font color='maroon' size=4 face='courier new'><b>June</b></font>" ,
          "<font color='maroon' size=4 face='courier new'><b>July</b></font>" ,
     "<font color='maroon' size=4 face='courier new'><b>August</b></font>" ,
     "<font color='maroon' size=4 face='courier new'><b>September</b></font>" ,
     "<font color='maroon' size=4 face='courier new'><b>October</b></font>" ,
     "<font color='maroon' size=4 face='courier new'><b>November</b></font>" ,
     "<font color='maroon' size=4 face='courier new'><b>December</b></font>" );
     var  $daysInMonth  array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
     function  setDayNames( $names )
     {
         $this ->dayNames= $names ;
     }
     function  getDayNames()
     {
         return  $this ->dayNames;
     }
     function  setMonthNames( $names )
     {
         $this ->monthNames= $names ;
     }
     function  getMonthNames()
     {
         return  $this ->monthNames;
     }
     function  setStartDay( $day )
     {
         $this ->startDay= $day ;
     }
     //获取一个开始日期的函数
     function  getStartDay()
     {
         return  $this ->startDay;
     }
     function  setStartMonth( $month )
     {
         $this ->startMonth= $month ;
     }
     function  getStartMonth()
     {
         return  $this ->startMonth;
     }
     function  getCalendarLink( $month , $year )
     {
         return  "" ;
     }
     //声明一个获取日期链接的函数
     function  getDateLink( $day , $month , $year )
     {
         $link = "counter.php?day=$day&month=$month&year=$year&fromcounter=1" ;
         return  "$link" ;
     }
     //设置日期链接
     function  getCurrentMonthView()
     {
         $d = getdate (time());
         return  $this ->getMonthView( $d [ "mon" ], $d [ "year" ]);
     }
     //获取当前年份
     function  getCurrentYearView()
     {
         $d = getdate (time());
         return  $this ->getYearView( $d [ "year" ]);
     }
     //声明一个获取指定年,月的函数
     function  getMonthView( $month , $year )
     {
         return  $this ->getMonthHTML( $month , $year );
     }
     //声明一个获取指定年的月份信息的函数
     function  getYearView( $year )
     {
         return  $this ->getYearHTML( $year );
     }
     //获取每月的天数
     function  getDaysInMonth( $month , $year )
     {
         if ( $month <1 ||  $month >12)
         {
             return  0;
         }
         $d = $this ->daysInMonth[ $month -1];
         if ( $month ==2)
         {
             if ( $year %4==0)
             {
                 if ( $year %100==0)
                 {
                     if ( $year %400==0)
                     {
                         $d =29;
                     }
                 }
                 else
                 {
                     $d =29;
                 }
             }
         }
         return  $d ;
     }
     //声明一个获取月份的getMonthHTML函数
     function  getMonthHTML( $m , $y , $showYear =1)
     {
         $s = "" ;
         $a = $this ->adjustDate( $m , $y );
         $month = $a [0];
         $year = $a [1];
         $daysInMonth = $this ->getDaysInMonth( $month , $year );
         $date = getdate ( mktime (12,0,0, $month ,1, $year ));
         $first = $date [ 'wday' ];
         $monthName = $this ->monthNames[ $month -1];
         $prev = $this ->adjustDate( $month -1, $year );
         $next = $this ->adjustDate( $month +1, $year );
         if ( $showYear ==1)
         {
             $prevMonth = $this ->getCalendarLink( $prev [0], $prev [1]);
             $nextMonth = $this ->getCalendarLink( $next [0], $next [1]);
         }
         else
         {
             $prevMonth = "" ;
             $nextMonth = "" ;
         }
         $header = $monthName .(( $showYear >0) ?  " <font color='orange'><b>" . $year  "</b></font>" );
         $s .= "<table class='calendar' border=4 cellspacing=4 cellpadding=4 align=center bordercolor=blue" ;
         $s .= "<tr>" ;
         $s .= "<td align='center' valign='top'>" .(( $prevMonth == "" ) ?  "&nbsp;"  "<a href='$prevMonth'>&lt;&lt;</a>" ). "</td>" ;
         $s .= "<td align='center' valign='center' class='calendarHeader' colspan='5'>$header</td>" ;
         $s .= "<td align='center' valign='top'>" .(( $nextMonth == "" ) ?  "&nbsp;"  "<a href='$nextMonth'>&gt;&gt;</a>" ). "</td>" ;
         $s .= "</tr>" ;
         $s .= "<tr>" ;
         $s .= "<td align='center' width=70 class='calendarHeader'>" . $this ->dayNames[( $this ->startDay)%7]. "</td>" ;
         $s .= "<td align='center' width=70 class='calendarHeader'>" . $this ->dayNames[( $this ->startDay+1)%7]. "</td>" ;
         $s .= "<td align='center' width=70 class='calendarHeader'>" . $this ->dayNames[( $this ->startDay+2)%7]. "</td>" ;
         $s .= "<td align='center' width=70 class='calendarHeader'>" . $this ->dayNames[( $this ->startDay+3)%7]. "</td>" ;
         $s .= "<td align='center' width=70 class='calendarHeader'>" . $this ->dayNames[( $this ->startDay+4)%7]. "</td>" ;
         $s .= "<td align='center' width=70 class='calendarHeader'>" . $this ->dayNames[( $this ->startDay+5)%7]. "</td>" ;
         $s .= "<td align='center' width=70 class='calendarHeader'>" . $this ->dayNames[( $this ->startDay+6)%7]. "</td>" ;
         $s .= "</tr>" ;
         $d = $this ->startDay+1- $first ;
         while ( $d >1)
         {
             $d -=7;
         }
         $today = getdate (time());
         while ( $d <= $daysInMonth )
         {
             $s .= "<tr>" ;
             for ( $i =0; $i <7; $i ++)
             {
                 $class =( $year == $today [ 'year' ] &&  $month == $today [ 'mon' ] &&  $d == $today [ 'mday' ]) ?  "calenderToday"  "calendar" ;
                 $s .= "<td class='$class' align='center'>" ;
                 if ( $d >0 &&  $d <= $daysInMonth )
                 {
                     $link = $this ->getDateLink( $d , $month , $year );
                     $mtime = mktime ();
                     $dnow = date ( "d" , $mtime );
                     $mnow = date ( "m" , $mtime );
                     if ( $dnow == $d  &&  $mnow == $month )
                     {
                         $s .=(( $link == "" ) ?  $d  "<b><a href='$link'><font face='courier new' color='red'>$d</font></a></b>" );
                     }
                     else
                     {
                         $s .=(( $link == "" ) ?  $d  "<a href='$link'><font face='courier new' color='blue'>$d</font></a>" );
                     }
                 }
                 else
                 {
                     $s .= "&nbsp;" ;
                 }
                 $s .= "</td>" ;
                 $d ++;
             }
             $s .= "</tr>" ;
         }
         $s .= "</table>" ;
         return  $s ;
     }
 
     //声明一个获取年份的HTML
     function  getYearHTML( $year )
     {
         $s = "" ;
         $prev = $this ->getCalendarLink(0, $year -1);
         $next = $this ->getCalendarLink(0, $year +1);
         $s .= "<table class='calendar' border='1'>" ;
         $s .= "<tr>" ;
         $s .= "<td align='center' valign='top'>" .(( $prev == "" ) ?  "&nbsp;"  "<a href='$prev'>&lt;&lt;</a>" ). "</td>" ;
         $s .= "<td class='calendarHeader' vlign='top' align='center'>" .(( $this ->startMonth>1) ?  $year . "-" .( $year +1) :  $year ). "</td>" ;
         $s .= "<td align='center' valign='top'>" .(( $next == "" ) ?  "&nbsp;"  "<a href='$next'>&gt;&gt;</a>" ). "</td>" ;
         $s .= "</tr>" ;
         $s .= "<tr>" ;
         $s .= "<td class='calendar' valign='top'>" . $this ->getMonthHTML(0+ $this ->startMonth, $year ,0). "</td>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(1 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(2 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "</tr>" ;
         $s  .=  "<tr>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(3 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(4 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(5 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "</tr>" ;
         $s  .=  "<tr>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(6 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(7 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(8 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "</tr>" ;
         $s  .=  "<tr>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(9 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(10 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "<td class=\"calendar\" valign=\"top\">"  $this ->getMonthHTML(11 +  $this ->startMonth,  $year , 0) . "</td>" ;
         $s  .=  "</tr>" ;
         $s  .=  "</table>" ;
         return  $s ;
     }
     //声明一个日期调整函数
     function  adjustDate( $month , $year )
     {
         $a = array ();
         $a [0]= $month ;
         $a [1]= $year ;
         while ( $a [0]>12)
         {
             $a [0]-=12;
             $a [1]++;
         }
         while ( $a [0]<=0)
         {
             $a [0]+=12;
             $a [1]--;
         }
         return  $a ;
     }
 
}
class  MyCalendar  extends  Calendar
{
     function  getCalendarLink( $month , $year )
     {
         $s = getenv ( 'SCRIPT_NAME' ); //相当于$_SERVER['SCRIPT_NAME']
         return  "$s?month=$month&year=$year" ;
     }
}
?>
 

转载于:https://www.cnblogs.com/tcode/p/5915295.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值