<?php
class calendar{
private $year;
private $month;
private $daynum;
private $start_day;
function __construct(){
$this->year=isset($_GET["year"])?$_GET["year"]:date("Y");
$this->month=isset($_GET["month"])?$_GET["month"]:date("n");
$this->daynum=date("t",mktime(0,0,0,$this->month,1,$this->year));
$this->start_day=date("w",mktime(0,0,0,$this->month,1,$this->year));
}
function out(){
echo '<table align="center">';
$this->changecalendar();
$this->daylist();
$this->formset();
echo '</table>';
}
function daylist(){
$day=array('日','一','二','三','四','五','六','七');
echo '<tr class="oneline">';
for($i=0;$i<7;$i++){
echo '<td>';
echo $day[$i];
echo '</td>';
}
echo '</tr>';
}
function formset() {
echo '<tr>';
for($j=0; $j<$this->start_day; $j++)
echo '<td> </td>';
$k=$this->start_day;
for($j=1;$j<=$this->daynum;$j++){
if($j==date("j")){
echo '<td class="oneline">'.$j.'</td>';
}else{
echo '<td>'.$j.'</td>';
}
$k++;
if($k%7==0)
echo '</tr><tr>';
} }
private function changecalendar(){
echo '<tr>';
//这个正常 echo '<td><a href="?'.$this->prevYear($this->year,$this->month).'">'.'<<'.'</a></td>';
//这个不正常 echo '<td><a href="?'.$this->preYear().'">'.'<<'.'</a></td>';
echo '<td colspan="3">'.$this->year.'-'.$this->month.'</td>';
echo '</tr>';
}
private function prevYear($year, $month){
$year=$year-1;
if($year < 1970)
$year = 1970; return "year={$year}&month={$month}";
}
private function preYear(){
$this->year=$this->year-1;
if($this->year<1970){
$this->year=1970;
}
return "year={$this->year}&month={$this->month}";
}
private function preMonth(){
if($this->month == 1){
$this->year=$this->year - 1;
$this->month=12;
}else{
$this->month=$this->month-1;
}
echo "111";
return 'year='.$this->year.'&month='.$this->month;
}
private function nextYear(){
$this->year=$this->year + 1;
if($this->year>2038){
$this->year=2038;
}
return 'year='.$this->year.'&month='.$this->month;
}
private function nextMonth(){
if($this->month==12){
$this->month=1;
$this->year=$this->year + 1;
}else{
$this->month=$this->month + 1;
}
return 'year='.$this->year.'&month='.$this->month;
}
}运行文件:<style> table{
width:300px;
border:1px solid #050;
text-align:center;
}
.oneline{
color:white;
background:blue;
}
</style>
<?php
include "calendar.php";
$calendar=new calendar();
$calendar->out();这是一个制作日历的php小程序,请看我注释那2行,第一行很正常,而第二行运行的时候你会发现year是2011,而且总比表单中的year小一,但你看这2行中的方法竟然是一样的,奇怪吧?想了半天了,我投降了,菜鸟求高手解答;;
$this->year=$this->year-1;
if($this->year<1970){
$this->year=1970;
}
return "year={$this->year}&month={$this->month}";
}我想知道为啥总是-1年啊??
private function preYear(){
$year=$this->year-1;
if($year<1970){
$year=1970;
}
return "year={$year}&month={$this->month}";
}
private function preYear(){
$this->year=$this->year-1;
if($this->year<1970){
$this->year=1970;
}
return "year={$this->year}&month={$this->month}";
}