用PHP实现日历类的编写,供大家参考,具体内容如下
calendar.class.php
<?php/** 创建一个日历类***///修改默认时区date_default_timezone_set(\"PRC\");class Calendar {private $year;private $month;private $day; //当月总天数private $first_week; //每月的第一天是星期几//构造函数function __construct() {$this->year = isset($_GET[\'year\'])?$_GET[\'year\']:date(\"Y\");$this->month = isset($_GET[\"month\"])?$_GET[\"month\"]:date(\"m\");$this->first_week = date(\"w\", mktime(0, 0 ,0, $this->month, 1, $this->year));$this->day = date(\"t\", mktime(0, 0 ,0, $this->month, 1, $this->year));}function showCalendar() {// echo $this->year.\"年\".$this->month.\"月\".$this->first_week.\"天\".$this->day;echo \"<table align=\'center\'>\"; //用表格输出$this->chageDate(\"index.php\"); //用于用户调整年月份$this->weekList();//显示星期$this->dayList(); //显示天数echo \"</table>\";}//1、显示星期private function weekList() {$week = array(\"日\",\"一\",\"二\",\"三\",\"四\",\"五\",\"六\");echo \"<tr>\";for ($i = 0; $i < count($week); $i++) {echo \"<th>\".$week[$i].\"</th>\";}echo \"</tr>\";}//2.显示天数private function dayList() {$color = \"#2ca50c\";echo \"<tr>\";for ($i = 0; $i < $this->first_week; $i++) { //输出空格,弥补当前月空缺部分echo \"<td bgcolor=\'#2ca50c\'> </td>\";}for ($k = 1; $i <= $this->day; $k++) {$i++;if ($k == date(\"d\")) echo \"<td id=\'nowd\'>\".$k.\"</td>\"; //是今天,加效果else echo \"<td bgcolor=$color>\".$k.\"</td>\";if ($i % 7 == 0) {echo \"</tr><tr>\"; //每7天一次换行if ($i % 2 == 0) $color = \"#2ca50c\";else $color = \"#9ddb27\"; //实现各行换色的效果}}while ($i % 7 != 0) { //将剩余的空格补完echo \"<td bgcolor=\'#2ca50c\'> </td>\";$i++;}echo \"</tr>\";}//3、用于用户调整天数private function chageDate($url=\"index.php\") {echo \"<tr>\";echo \"<caption><h1>\".$this->year.\"年\".$this->month.\"月</h1></caption>\";echo \"</tr>\";echo \"<tr>\";echo \"<td>\".\"<a href=\'?\".$this->prevYear($this->year,$this->month).\"\'>\".\"<\".\"</a>\";echo \"<td>\".\"<a href=\'?\".$this->prevMonth($this->year,$this->month).\"\'>\".\"<<\".\"</a>\";echo \"<td colspan=\'3\'>\";echo \'<select οnchange=\"window.location=\\\'\'.$url.\'?year=\\\'+this.options[selectedIndex].value+\\\'&month=\'.$this->month.\'\\\'\">\';for ($year = 2038; $year >= 1970; $year--) {$selected = ($year == $this->year)?\"selected\":\"\";echo \'<option \'.$selected. \' value=\"\'.$year.\'\">\'.$year.\'</option>\';//echo \'<option \'.$selected.\' value=\"\'.$year.\'\">\'.$year.\'</option>\';}echo \"</select>\";echo \'<select name=\"month\" οnchange=\"window.location=\\\'\'.$url.\'?year=\'.$this->year.\'&month=\\\'+this.options[selectedIndex].value\">\';for($month=1;$month <= 12;$month++){$selected1 = ($month == $this->month) ? \"selected\" : \"\";echo \'<option \'.$selected1.\' value=\"\'.$month.\'\">\'.$month.\'</option>\';}echo \'</select>\';echo \"</td>\";echo \"<td>\".\"<a href=\'?\".$this->nextMonth($this->year,$this->month).\"\'>\".\">>\".\"</a>\";echo \"<td>\".\"<a href=\'?\".$this->nextYear($this->year,$this->month).\"\'>\".\">\".\"</a>\";echo \"</tr>\";}private function prevYear($year, $month) { //获取上一年的数据$year--;if ($year < 1970) $year = 1970;return \"year={$year}&month={$month}\";}private function prevMonth($year, $month) {if ($month == 1) {$year--;if ($year < 1970) $year = 1970;$month = 12;}else $month--;return \"year={$year}&month={$month}\";}private function nextYear($year, $month) { //获取上一年的数据$year++;if ($year > 2038) $year = 2038;return \"year={$year}&month={$month}\";}private function nextMonth($year, $month) {if ($month == 12) {$year++;if ($year > 2038) $year = 2038;$month = 1;}else $month++;return \"year={$year}&month={$month}\";}}
主页 index.php
<!doctype html><html><head><meta charset=\"utf-8\"><title>日历显示</title><style>table {border:1px solid #050;margin: 100px auto;}th {width: 30px;background-color: #0CC;color: #fff;height: 30px;font-size: 20px;}#nowd {color: yellow;background: #F00;}td {width: 30px;text-align: center;height: 25px;color: #fff;}a {display: block;width: 35px;height: 35px;background: #0F9;text-decoration: none;text-align: center;line-height: 35px;}a:hover {background: #CF0;color: #fff;font-size: 20px;}</style></head><body><?phpinclude \"calendar.class.php\";$ca = new Calendar();$ca->showCalendar();?></body></html>
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
- PHP实现的简单日历类
- 一个比较不错的PHP日历类分享
- PHP完整的日历类(CLASS)