5
table
{
border
:
1px
solid
#050
;}
6
.fontb
{
color
:white;
background
:blue;}
7
th
{
width
:
30px
;}
8
td
,
th
{
height
:
30px
;
text-align
:center;}
9
form
{
margin
:
0px
;
padding
:
0px
;}
10
</
style
>
11
</
head
>
12
<
body
>
13
<?php
14 require "calendar.class.php";
15 echo new Calendar;
16 ?>
17
</
body
>
18
</
html
>
calendar.php
1 <?php
2 class Calendar{
3 private $year;
4 private $month;
5 private $start_weekday;
6 private $days;
7 function __construct(){
8 $this->year = isset($_GET["year"])?$_GET["year"]:date("Y");
9 $this->month = isset($_GET["month"])?$_GET["month"]:date("m");
10 $this->start_weekday = date("w",mktime(0,0,0,$this->month,1,$this->year));
11 $this->days = date("t",mktime(0,0,0,$this->month,1,$this->year));
14 function __toString(){
15 $out .='<table align="center">';
16 $out .=$this->chageDate();
17 $out .=$this->weeksList();
18 $out .=$this->daysList();
19 $out .='</table>';
20 return $out;
23 private function weeksList(){
24 $week = array('日','一','二','三','四','五','六');
25 $out .= '<tr>';
26 for($i=0;$i<count($week);$i++){
27 $out .= '<th class="fontb">'.$week[$i].'</th>';
29 $out .= '</tr>';
30 return $out;
33 private function daysList(){
34 $out .= '<tr>';
35 for($j=0;$j<$this->start_weekday;$j++){
36 $out .= '<td> </td>';
38 for($k=1;$k<=$this->days;$k++){
39 $j++;
40 if($k==date('d')){
41 $out .= '<td class="fontb">'.$k.'</td>';
43 else{
44 $out .= '<td>'.$k.'</td>';
46 if($j%7==0){
47 $out .= '</tr><tr>';
50 while($j%7!=0){
51 $out .= '<td> </td>';
52 $j++;
54 $out .= '</tr>';
55 return $out;
58 private function prevYear($year,$month){
59 $year = $year-1;
60 if($year<1970){
61 $year=1970;
63 return "year=($year)&month=($month)";
66 private function prevMonth($year,$month){
67 if($month==1){
68 $year=$year-1;
69 if($year<1970){
70 $year=1970;
72 $month=12;
74 else{
75 $month--;
77 return "year=($year)&month=($month)";
80 private function nextYear($year,$month){
81 $year=$year+1;
82 if($year>2038){
83 $year=2038;
85 return "year=($year)&month=($month)";
88 private function nextMonth($year,$month){
89 if($month==12){
90 $year++;
91 if($year>2038){
92 $year=2038;
94 $month=1;
96 else{
97 $month++;
99 return "year=($year)&month=($month)";
100 }
102 private function chageDate($url="index.php"){
103 $out .= '<tr>';
104 $out .= '<td><a href="'.$url.'?'.$this->prevYear($this->year,$this->month).'">'.'<<'.'</a></td>';
105 $out .= '<td><a href="'.$url.'?'.$this->prevMonth($this->year,$this->month).'">'.'<'.'</a></td>';
106 $out .= '<td colspan="3">';
107 $out .= '<form>';
108 $out .= '<select name="year" onchange="window.location=\''.$url.'?year=\'+this.options[selectedIndex].value+\'&month='.$this->month.'\'">';
109 for($sy=1970;$sy<=2038;$sy++){
110 $selected=($sy==$this->year)?"selected":"";
111 $out .='<option '.$selected.' value="'.$sy.'">'.$sy.'</option>';
112 }
113 $out .= '</select>';
114 $out .= '<select name="month" onchange="window.location=\''.$url.'?year='.$this->year.'&month=\'+this.options[selectedIndex].value">';
115 for($sm=1;$sm<=12;$sm++){
116 $selected1=($sm==$this->month)?"selected":"";
117 $out .= '<option '.$selected1.' value="'.$sm.'">'.$sm.'</option>';
118 }
119 $out .= '</select>';
120 $out .= '</form>';
121 $out .= '</td>';
122 $out .= '<td><a href="'.$url.'?'.$this->nextYear($this->year,$this->month).'">'.'>>'.'</a></td>';
123 $out .= '<td><a href="'.$url.'?'.$this->nextMonth($this->year,$this->month).'">'.'>'.'</a></td>';
124 $out .= '</tr>';
125 return $out;
126 }
127 }
128 ?>
结果如下:
Angel_Kitty
107.8k
粉丝