<span>php
</span><span>
class
</span><span> Calendar {
</span><span>
private
</span>
$year
; <span>
$</span><span>this</span>->year=isset(
$_GET
[<span>
"</span><span>year</span><span>"
</span>]) ?
$_GET
[<span>
"</span><span>year</span><span>"
</span>] :
date
(<span>
"</span><span>Y</span><span>"
</span><span>);
$</span><span>this</span>->m>
"<span>month</span><span>"
</span>]) ?
$_GET
[<span>
"</span><span>month</span><span>"
</span>] :
date
(<span>
"</span><span>m</span><span>"
</span><span>);
$</span><span>this</span>->start_weekday=
date
(<span>
"</span><span>w</span><span>"
</span>,
mktime
(<span>0</span>, <span>0</span>, <span>0</span>, $<span>this</span>->month, <span>1</span>, $<span>this</span>-><span>year));
$</span><span>this</span>->days=
date
(<span>
"</span><span>t</span><span>"
</span>,
mktime
(<span>0</span>, <span>0</span>, <span>0</span>, $<span>this</span>->month, <span>1</span>, $<span>this</span>-><span>year));
}
function
</span><span>out</span><span>(){
echo
</span><span>'</span><span><table align=
"center"
>
<span>'</span><span>;
$</span><span>this</span>->chageDate(<span>
"</span><span>test.php</span><span>"
</span><span>);
$</span><span>this</span>-><span>weeksList();
$</span><span>this</span>-><span>daysList();
echo
</span><span>'</span><span></span>
</table></span><span>'</span><span>;
}
</span><span>
private
</span><span>
function
weeksList(){
$week
</span>=
array
(<span>
'</span><span>日</span><span>'
</span>,<span>
'</span><span>一</span><span>'
</span>,<span>
'</span><span>二</span><span>'
</span>,<span>
'</span><span>三</span><span>'
</span>,<span>
'</span><span>四</span><span>'
</span>,<span>
'</span><span>五</span><span>'
</span>,<span>
'</span><span>六</span><span>'
</span><span>);
echo
</span><span>'</span><span><tr>
<span>'</span><span>;
</span><span>
for
</span>(
$i
=<span>0</span>;
$i
<
count
>)
echo
<span>'</span><span></span><th>
<span>
'</span>.$week[$i].<span>'
</span><span></span>
</th>
<span>'</span><span>;
echo
</span><span>'</span><span></span></
count
>
</tr></span><span>'</span><span>;
}
</span><span>
private
</span><span>
function
daysList(){
echo
</span><span>'</span><span><tr>
<span>'</span><span>;
</span><span>
echo
</span><span>'</span><span></span><td> </td>
<span>'</span><span>;
</span><span>
for
</span>(
$k
=<span>1</span>;
$kthis
->days;
$k
++<span>){
$j
</span>++<span>;
</span><span>
if
</span>(
$k
==
date
(<span>
'</span><span>d</span><span>'
</span><span>))
echo
</span><span>'</span><span></span><td>
<span>
'</span>.$k.<span>'
</span><span></span>
</td>
<span>'</span><span>;
</span><span>
else
</span><span>
echo
</span><span>'</span><span></span><td>
<span>
'</span>.$k.<span>'
</span><span></span>
</td>
<span>'</span><span>;
</span><span>
if
</span>(
$j
%<span>7</span>==<span>0</span><span>)
echo
</span><span>'</span><span></span>
</tr>
<tr>
<span>'</span><span>;
}
</span><span>
echo
</span><span>'</span><span></span><td> </td>
<span>'</span><span>;
$j
</span>++<span>;
}
echo
</span><span>'</span><span></span>
</tr></span><span>'</span><span>;
}
</span><span>
private
</span><span>
function
prevYear(
$year
,
$month
){
$year
</span>=
$year
-<span>1</span><span>;
</span><span>
if
</span>(
$year
1970<span>)
$year
</span>= <span>1970</span><span>;
</span><span>
return
</span><span>
"</span><span>year={$year}&m/span><span>"
</span><span>;
}
</span><span>
private
</span><span>
function
prevMonth(
$year
,
$month
){
</span><span>
if
</span>(
$month
== <span>1</span><span>) {
$year
</span>=
$year
-<span>1</span><span>;
</span><span>
if
</span>(
$year
1970</span><span>)
$year
</span>= <span>1970</span><span>;
$month
</span>=<span>12</span><span>;
}</span><span>
else
</span><span>{
$month
</span>--<span>;
}
</span><span>
return
</span><span>
"</span><span>year={$year}&m/span><span>"
</span><span>;
}
</span><span>
private
</span><span>
function
nextYear(
$year
,
$month
){
$year
</span>=
$year
+ <span>1</span><span>;
</span><span>
if
</span>(
$year
> <span>2038</span><span>)
$year
</span>= <span>2038</span><span>;
</span><span>
return
</span><span>
"</span><span>year={$year}&m/span><span>"
</span><span>;
}
</span><span>
private
</span><span>
function
nextMonth(
$year
,
$month
){
</span><span>
if
</span>(
$m
>12</span><span>){
$year
</span>++<span>;
</span><span>
if
</span>(
$year
> <span>2038</span><span>)
$year
</span>=<span>2038</span><span>;
$month
</span>=<span>1</span><span>;
}</span><span>
else
</span><span>{
$month
</span>++<span>;
}
</span><span>
return
</span><span>
"</span><span>year={$year}&m/span><span>"
</span><span>;
}
</span><span>
private
</span>
function
chageDate(
$url
=<span>
""
</span><span>){
echo
</span><span>'</span><span><tr>
<span>'</span><span>;
echo
</span><span>
'</span><span></span><td><a href="?</span><span>'
</span>.%24<span>this</span>->prevYear(%24<span>this</span>->year,%20%24<span>this</span>->month).<span>
'</span><span>"><span>'
</span>.<span>
'</span><span><span>'
</span>.<span>'</span><span></span></span></a></td>
<span>'</span><span>;
echo
</span><span>
'</span><span></span><td><a href="?</span><span>'
</span>.%24<span>this</span>->prevMonth(%24<span>this</span>->year,%20%24<span>this</span>->month).<span>
'</span><span>"><span>'
</span>.<span>
'</span><span><span>'
</span>.<span>'</span><span></span></span></a></td>
<span>'</span><span>;
echo
</span><span>'</span><span></span><td colspan=
"3"
>
<span>'</span><span>;
echo
</span><span>
'</span><span><form></form></span><span>'
</span><span>;
echo
</span><span>
'</span><span><select name="year">'
</select></span>.
$url
.<span>
'</span><span>?year=\'+this.options[selectedIndex].value+\'&m/span><span>'
</span>.$<span>this</span>->month.<span>
'</span><span>\'"></span><span>'
</span><span>;
</span><span>
for
</span>(
$sy
=<span>1970</span>;
$sy
2038</span>;
$sy
++<span>){
$selected
</span>= (
$sy
==$<span>this</span>->year) ? <span>
"</span><span>selected</span><span>"
</span> : <span>
""
</span><span>;
echo
</span><span>'</span><span><option>
<span>
'</span>.$selected.<span>'
</span><span> value=
"</span><span>'</span>.$sy.<span>'</span><span>"
></span><span>
'</span>.$sy.<span>'
</span><span></span>
</option></span><span>'</span><span>;
}
echo
</span><span>
'</span><span></span><span>'
</span><span>;
echo
</span><span>
'</span><span><select name="month">'
</select></span>.
$url
.<span>
'</span><span>?year=</span><span>'
</span>.$<span>this</span>->year.<span>
'</span><span>&m/span><span>'
</span><span>;
</span><span>
for
</span>(
$sm
=<span>1</span>;
$sm12
</span>;
$sm
++<span>){
$selected1
</span>= (
$sm
==$<span>this</span>->month) ? <span>
"</span><span>selected</span><span>"
</span> : <span>
""
</span><span>;
echo
</span><span>'</span><span><option>
<span>
'</span>.$selected1.<span>'
</span><span> value=
"</span><span>'</span>.$sm.<span>'</span><span>"
></span><span>
'</span>.$sm.<span>'
</span><span></span>
</option></span><span>'</span><span>;
}
echo
</span><span>
'</span><span></span><span>'
</span><span>;
echo
</span><span>
'</span><span></span><span>'
</span><span>;
echo
</span><span>'</span><span></span>
</td>
<span>'</span><span>;
echo
</span><span>
'</span><span></span><td><a href="?</span><span>'
</span>.%24<span>this</span>->nextYear(%24<span>this</span>->year,%20%24<span>this</span>->month).<span>
'</span><span>"><span>'
</span>.<span>
'</span><span>>></span><span>'
</span>.<span>'</span><span></span></a></td>
<span>'</span><span>;
echo
</span><span>
'</span><span></span><td><a href="?</span><span>'
</span>.%24<span>this</span>->nextMonth(%24<span>this</span>->year,%20%24<span>this</span>->month).<span>
'</span><span>"><span>'
</span>.<span>
'</span><span>></span><span>'
</span>.<span>'</span><span></span></a></td>
<span>'</span><span>;
echo
</span><span>'</span><span></span>
</tr></span><span>'</span><span>;
}
}</span></span></span>