«
php日历类

时间:2008-5-31    作者:Deri    分类: 分享


   <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>&#160;<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  &#160;"</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){   &#160;<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>