<p> <code><?php<br />class Calendar{<br />/*<br /> * 日历<br /> *<br /> * @作者:sports98<br /> * Email:flyruns@hotmail.com<br /> * @版本:V1.0<br /> */<br /> var $YEAR,$MONTH,$DAY;<br /> var $WEEK=array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");<br /> var $_MONTH=array(<br /> "01"=>"一月",<br /> "02"=>"二月",<br /> "03"=>"三月",<br /> "04"=>"四月",<br /> "05"=>"五月",<br /> "06"=>"六月",<br /> "07"=>"七月",<br /> "08"=>"八月",<br /> "09"=>"九月",<br /> "10"=>"十月",<br /> "11"=>"十一月",<br /> "12"=>"十二月"<br /> );<br /> //设置年份<br /> function setYear($year){<br /> $this->YEAR=$year;<br /> }<br /> //获得年份<br /> function getYear(){<br /> return $this->YEAR;<br /> }<br /> //设置月份<br /> function setMonth($month){<br /> $this->MONTH=$month;<br /> }<br /> //获得月份<br /> function getMonth(){<br /> return $this->MONTH;<br /> }<br /> //设置日期<br /> function setDay($day){<br /> $this->DAY=$day;<br /> }<br /> //获得日期<br /> function getDay(){<br /> return $this->DAY;<br /> }<br /> //打印日历<br /> function OUT(){<br /> $this->_env();<br /> $week=$this->getWeek($this->YEAR,$this->MONTH,$this->DAY);//获得日期为星期几 (例如今天为2003-07-18,星期五)<br /> $fweek=$this->getWeek($this->YEAR,$this->MONTH,1);//获得此月第一天为星期几<br /> echo "<div style=\"margin:0;border:1 solid black;width:300;font:9pt\"><br /> <form action=$_SERVER[PHP_SELF] method=\"post\" style=\"margin:0\"><br /> <select name=\"month\" onchange=\"this.form.submit();\">";<br /> for($ttmpa=1;$ttmpa<13;$ttmpa++){//打印12个月<br /> $ttmpb=sprintf("%02d",$ttmpa);<br /> if(strcmp($ttmpb,$this->MONTH)==0){<br /> $select="selected style=\"background-color:#c0c0c0\"";<br /> }else{<br /> $select="";<br /> }<br /> echo "<option value=\"$ttmpb\" $select>".$this->_MONTH[$ttmpb]."</option>\r\n";<br /> }<br /> echo " </select> <select name=\"year\" onchange=\"this.form.submit();\">";//打印年份,前后10年<br /> for($ctmpa=$this->YEAR-10;$ctmpa<$this->YEAR+10;$ctmpa++){<br /> if($ctmpa>2037){<br /> break;<br /> }<br /> if($ctmpa<1970){<br /> continue;<br /> }<br /> if(strcmp($ctmpa,$this->YEAR)==0){<br /> $select="selected style=\"background-color:#c0c0c0\"";<br /> }else{<br /> $select="";<br /> }<br /> echo "<option value=\"$ctmpa\" $select>$ctmpa</option>\r\n";<br /> }<br /> echo  "</select><br /> </form><br /> <table border=0 align=center>";<br /> for($Tmpa=0;$Tmpa<count($this->WEEK);$Tmpa++){//打印星期标头<br /> echo "<td>".$this->WEEK[$Tmpa];<br /> }<br /> for($Tmpb=1;$Tmpb<=date("t",mktime(0,0,0,$this->MONTH,$this->DAY,$this->YEAR));$Tmpb++){//打印所有日期<br /> if(strcmp($Tmpb,$this->DAY)==0){ //获得当前日期,做标记<br /> $flag=" bgcolor='#ff0000'";<br /> }else{<br /> $flag=' bgcolor=#ffffff';<br /> }<br /> if($Tmpb==1){  <br /> echo "<tr>"; //补充打印<br /> for($Tmpc=0;$Tmpc<$fweek;$Tmpc++){<br /> echo "<td>";<br /> }<br /> }<br /> if(strcmp($this->getWeek($this->YEAR,$this->MONTH,$Tmpb),0)==0){<br /> echo "<tr><td align=center $flag>$Tmpb";<br /> }else{<br /> echo "<td align=center $flag>$Tmpb";<br /> }<br /> }<br /> echo "</table></div>";<br /> }<br /> //获得方法内指定的日期的星期数<br /> function getWeek($year,$month,$day){<br /> $week=date("w",mktime(0,0,0,$month,$day,$year));//获得星期<br /> return $week;//获得星期<br /> }<br /> function _env(){<br /> if(isset($_POST[month])){ //有指定月<br /> $month=$_POST[month];<br /> }else{<br /> $month=date("m"); //默认为本月<br /> }<br /> if(isset($_POST[year])){ //有指年<br /> $year=$_POST[year];<br /> }else{<br /> $year=date("Y"); //默认为本年<br /> }<br /> $this->setYear($year);<br /> $this->setMonth($month);<br /> $this->setDay(date("d"));<br /> }<br />}<br />$D=new Calendar;<br />$D->OUT();<br />?><br /></code></p>