日历效果如下图:
calendar.class.php
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 '
'; $this->chageDate("test.php"); $this->weeksList(); $this->daysList(); echo '
'; } private function weeksList(){ $week=array('日','一','二','三','四','五','六'); echo ''; for($i=0; $i'.$week[$i].''; echo '
'; } private function daysList(){ echo ''; //输出空格(当前一月第一天前面要空出来) for($j=0; $j<$this->start_weekday; $j++) echo ' | '; for($k=1; $k<=$this->days; $k++){ $j++; if($k==date('d')) echo ''.$k.' | '; else echo ''.$k.' | '; if($j%7==0) echo '
'; } //后面几个空格 while($j%7!==0){ echo ' | '; $j++; } echo '
'; } 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 ''; echo 'prevYear($this->year, $this->month).'">'.'<<'.' | '; echo 'prevMonth($this->year, $this->month).'">'.'<'.' | '; echo ''; echo ''; echo ' | '; echo 'nextYear($this->year, $this->month).'">'.'>>'.' | '; echo 'nextMonth($this->year, $this->month).'">'.'>'.' | '; echo '
'; } }?>
test.php
out();?>