使用php制作的日历

使用php制作的日历

这篇文章主要介绍了使用php制作的日历,下面有效果图,大家参考使用吧使用php制作的日历

calendar.class.php

代码如下:

<?php

class Calendar {

private $year; //当前的年

private $month; //当前的月

private $start_weekday; //当月的第一天对应的是周几

private $days; //当前月一共多少天

function __construct(){

$this->year=isset($_GET["year"]) ? $_GET["year"] : date("Y");

$this->month=isset($_GET["month"]) ? $_GET["month"] : date("m");

$this->start_weekday=date("w", mktime(0, 0, 0, $this->month, 1, $this->year));

$this->days=date("t", mktime(0, 0, 0, $this->month, 1, $this->year));

}

function out(){

echo '<table align="center">';

$this->chageDate("test.php");

$this->weeksList();

$this->daysList();

echo '</table>';

}

private function weeksList(){

$week=array('日','一','二','三','四','五','六');

echo '<tr>';

for($i=0; $i<count($week); $i++)

echo '<th >'.$week[$i].'</th>';

echo '</tr>';

}

private function daysList(){

echo '<tr>';

//输出空格(当前一月第一天前面要空出来)

for($j=0; $j<$this->start_weekday; $j++)

echo '<td> </td>';

for($k=1; $k<=$this->days; $k++){

$j++;

if($k==date('d'))

echo '<td >'.$k.'</td>';

else

echo '<td>'.$k.'</td>';

if($j%7==0)

echo '</tr><tr>';

}

//后面几个空格

while($j%7!==0){

echo '<td> </td>';

$j++;

}

echo '</tr>';

}

private function prevYear($year, $month){

$year=$year-1;

if($year < 1970)

$year = 1970;

return "year={$year}&month={$month}";

}

private function prevMonth($year, $month){

if($month == 1) {

$year = $year -1;

if($year < 1970)

$year = 1970;

$month=12;

}else{

$month--;

}

return "year={$year}&month={$month}";

}

private function nextYear($year, $month){

$year = $year + 1;

if($year > 2038)

$year = 2038;

return "year={$year}&month={$month}";

}

private function nextMonth($year, $month){

if($month==12){

$year++;

if($year > 2100)

$year=2100;

$month=1;

}else{

$month++;

}

return "year={$year}&month={$month}";

}

private function chageDate($url=""){

echo '<tr>';

echo '<td><a href="?'.$this->prevYear($this->year, $this->month).'">'.'<<'.'</a></td>';

echo '<td><a href="?'.$this->prevMonth($this->year, $this->month).'">'.'<'.'</a></td>';

echo '<td colspan="3">';

echo '<form>';

echo '<select name="year" onchange="window.location=''.$url.'?year='+this.options[selectedIndex].value+'&month='.$this->month.''">';

for($sy=1970; $sy <= 2100; $sy++){

$selected = ($sy==$this->year) ? "selected" : "";

echo '<option '.$selected.' value="'.$sy.'">'.$sy.'</option>';

}

echo '</select>';

echo '<select name="month" onchange="window.location=''.$url.'?year='.$this->year.'&month='+this.options[selectedIndex].value">';

for($sm=1; $sm<=12; $sm++){

$selected1 = ($sm==$this->month) ? "selected" : "";

echo '<option '.$selected1.' value="'.$sm.'">'.$sm.'</option>';

}

echo '</select>';

echo '</form>';

echo '</td>';

echo '<td><a href="?'.$this->nextYear($this->year, $this->month).'">'.'>>'.'</a></td>';

echo '<td><a href="?'.$this->nextMonth($this->year, $this->month).'">'.'>'.'</a></td>';

echo '</tr>';

}

}

?>

test.php

代码如下:

<style>

table {

border:1px solid #050;

}

.fontb {

color:white;

background:blue;

}

th {

width:30px;

}

td,th {

height:30px;

text-align:center;

}

form {

margin:0px;

padding:0px;

}

</style>

<?php

include "calendar.class.php";

$calendar=new Calendar;

$calendar->out();

?>