首页 > php开发 > php简单的日历程序代码

php简单的日历程序代码

PHP提供了date()函数,该函数提供了丰富的日期处理功能,现在需要获得的数据有两个,第一个是当月的总天数,第二个是该月的第一天所在星期中的第几天,数字表示0(表示星期天)到6(表示星期六).

通过date()函数可以很容易获得上面的数据,代码如下:

<?php 
$month = $_GET['m']?$_GET['m']:date(‘n’); 
$year = $_GET['y']?$_GET['y']:date(‘Y’); 
$start_week = date(‘w’,mktime(0,0,0,$month,1,$year)); 
$day_num = date(‘t’,mktime(0,0,0,$month,1,$year)); 
$end = false; 
?> 
<table> 
<tr> 
<td>星期日</td><td>星期一</td><td>星期二</td><td>星期三</td><td>星期四</td><td>星期五</td><td>星期六</td> 
</tr> 
<tr> 
<?php 
for($i = 0; $i<$start_week; $i++) 
{ 
echo “<td></td>”; 
} 
$j=1; 
while($j<=$day_num) 
{ 
echo “<td>$j</td>”; 
$week = ($start_week+$j-1)%7; 
if($week ==6){ 
echo “nt</tr>n”; 
if($j != $day_num) 
echo “t<tr>ntt”; 
else $end = true; 
} 
$j++; 
} 
while($week%7 != 6) 
{ 
echo “<td></td>”; 
$week++; 
} 
if(!$end) 
echo “n</tr>”; 
?> 
</table>

高级一点类 

<?php 
class Calendar 
{ 
    private $year; 
    private $month; 
    private $weeks  = array('日','一','二','三','四','五','六'); 
    function __construct($options = array()) { 
        $this->year = date('Y'); 
        $this->month = date('m'); 
        $vars = get_class_vars(get_class($this)); 
        foreach ($options as $key=>$value) { 
            if (array_key_exists($key, $vars)) { 
                $this->$key = $value; 
            } 
        } 
    } 
    function display() 
    { 
        echo '<table class="calendar">'; 
        $this->showChangeDate(); 
        $this->showWeeks(); 
        $this->showDays($this->year,$this->month); 
        echo '</table>'; 
    } 
    private function showWeeks() 
    { 
        echo '<tr>'; 
        foreach($this->weeks as $title) 
        { 
            echo '<th>'.$title.'</th>'; 
        } 
        echo '</tr>'; 
    } 
    private function showDays($year, $month) 
    { 
        $firstDay = mktime(0, 0, 0, $month, 1, $year); 
        $starDay = date('w', $firstDay); 
        $days = date('t', $firstDay); 
        echo '<tr>'; 
        for ($i=0; $i<$starDay; $i++) { 
            echo '<td>&nbsp;</td>'; 
        } 
        for ($j=1; $j<=$days; $j++) { 
            $i++; 
            if ($j == date('d')) { 
                echo '<td class="today">'.$j.'</td>'; 
            } else { 
                echo '<td>'.$j.'</td>'; 
            } 
            if ($i % 7 == 0) { 
                echo '</tr><tr>'; 
            } 
        } 
        echo '</tr>'; 
    } 
    private function showChangeDate() 
    { 
        $url = basename($_SERVER['PHP_SELF']); 
        echo '<tr>'; 
 echo '<td><a href="?'.$this->preYearUrl($this->year,$this->month).'">'.'<<'.'</a></td>'; 
 echo '<td><a href="?'.$this->preMonthUrl($this->year,$this->month).'">'.'<'.'</a></td>'; 
        echo '<td colspan="3"><form>'; 
        echo '<select name="year" onchange="window.location=''.$url.'?year='+this.options[selectedIndex].value+'&month='.$this->month.''">'; 
        for($ye=1970; $ye<=2038; $ye++) { 
            $selected = ($ye == $this->year) ? 'selected' : ''; 
            echo '<option '.$selected.' value="'.$ye.'">'.$ye.'</option>'; 
        } 
        echo '</select>'; 
        echo '<select name="month" onchange="window.location=''.$url.'?year='.$this->year.'&month='+this.options[selectedIndex].value+''">'; 
        for($mo=1; $mo<=12; $mo++) { 
            $selected = ($mo == $this->month) ? 'selected' : ''; 
            echo '<option '.$selected.' value="'.$mo.'">'.$mo.'</option>'; 
        } 
        echo '</select>';         
        echo '</form></td>';         
 echo '<td><a href="?'.$this->nextMonthUrl($this->year,$this->month).'">'.'>'.'</a></td>'; 
 echo '<td><a href="?'.$this->nextYearUrl($this->year,$this->month).'">'.'>>'.'</a></td>';         
        echo '</tr>'; 
    } 
    private function preYearUrl($year,$month) 
    { 
        $year = ($this->year <= 1970) ? 1970 : $year - 1 ; 
        return 'year='.$year.'&month='.$month; 
    } 
    private function nextYearUrl($year,$month) 
    { 
        $year = ($year >= 2038)? 2038 : $year + 1; 
        return 'year='.$year.'&month='.$month; 
    } 
    private function preMonthUrl($year,$month) 
    { 
        if ($month == 1) { 
            $month = 12; 
            $year = ($year <= 1970) ? 1970 : $year - 1 ; 
        } else { 
            $month--; 
        }         
        return 'year='.$year.'&month='.$month; 
    } 
    private function nextMonthUrl($year,$month) 
    { 
        if ($month == 12) { 
            $month = 1; 
            $year = ($year >= 2038) ? 2038 : $year + 1; 
        }else{ 
            $month++; 
        } 
        return 'year='.$year.'&month='.$month; 
    } 
}

调用方法 

<?php 
$params = array(); 
if (isset($_GET['year']) && isset($_GET['month'])) { 
    $params = array( 
        'year' => $_GET['year'], 
        'month' => $_GET['month'], 
    ); 
} 
$params['url']  = 'demo.php'; 
require_once 'calendar.class.php'; 
?> 
<html> 
    <head> 
        <title>日历demo</title> 
        <meta http-equiv="Content-Type" content="text/html" charset="UTF-8" /> 
        <style type="text/css"> 
            table.calendar { 
                border: 1px solid #050; 
            } 
            .calendar th, .calendar td { 
                width:30px; 
                text-align:center; 
            }             
            .calendar th { 
                background-color:#050; 
                color:#fff; 
            } 
            .today{ 
  color:#fff; 
  background-color:#050;
            } 
        </style> 
    </head> 
    <body> 
        <div style="align:center"> 
            <?php 
                $cal = new Calendar($params); 
                $cal->display(); 
            ?>     
        </div> 
    </body> 
</html>


文章地址:http://www.phprm.com/develop/fs4943.html

转载随意^^请带上本文地址!

标签:php日历 php日历程序

相关文章

发表留言