php简单的日历程序
<?php class Calendar{ /** * @desc :简单的日历类,供大家学习 * @author :Allen Wu * @Email :wukewei00o@126.com * @Date :2008-09-12 * @version :v1.0 */ /*定义变量年、月、日*/ private $year,$month,$day; /*定义数组星期并初始化*/ private $week = array("星期日","星期一","星期二","星期三","星期四","星期五","星期六"); /*定义数组月份并初始化*/ private $monthes = array("01"=>"一月", "02"=>"二月", "03"=>"三月", "04"=>"四月", "05"=>"五月", "06"=>"六月", "07"=>"七月", "08"=>"八月", "09"=>"九月", "10"=>"十月", "11"=>"十一月", "12"=>"十二月" ); function __construct(){ $year = isset($_POST['year']) ? $_POST['year'] : date('Y'); $month = isset($_POST['month']) ? $_POST['month'] : date('m'); $day = isset($_POST['day']) ? $_POST['day'] : date('d'); $this->set($year, $month, $day); } /** * @desc 设置年、月、日的值 * @params String $year * @params String $month * @params String $day * @return */ private function set($year, $month, $day){ $this->year = $year; $this->month = $month; $this->day = $day; } /** * @desc 获取年、月、日的值并以数组形式返回 * @params Array $info * @retrun Array */ function get(array $info){ $info = array('year' => $this->year, 'month'=> $this->month, 'day' => $this->day); return $info; } /** * @desc 获得指定日期的星期值 * @params String $year * @params String $month * @params String $day * @return String */ private function getWeek($year, $month, $day){ $weekday = date("w",mktime(0,0,0,$month,$day,$year)); return $weekday; } /** * 输出日历,有兴趣的可以改进! * 其实这不是一个方法,不希望在类里出现html和样式 * 有兴趣的可以改进下!给大家起个抛砖引玉的作用 * */ public function out(){ $firstDay = $this->getWeek($this->year, $this->month, 1); echo "<div style="margin:0;border:1 solid black;width:300;font:9pt">". "<form action=$_SERVER[PHP_SELF] method="post" style="margin:0">". "<select name="month" onchange="this.form.submit();">"; /*打印12个月*/ for($month = 1; $month <= 12; $month++){ $tmp = sprintf("%02d", $month); if(strcmp($tmp, $this->month) == 0){ $select = "selected style="background-color:#c0c0c0""; }else{ $select = ""; } echo "<option value="$tmp" $select>".$this->monthes[$tmp]."</option>rn"; } echo "</select><select name="year" onchange="this.form.submit();">"; /*打印年份,前后10年*/ for($year = $this->year - 10; $year < $this->year + 10; $year++){ if($year > 2037){break;} if($year < 1970){continue;} if(strcmp($year, $this->year) == 0){ $select = "selected style="background-color:#c0c0c0""; }else{ $select = ""; } echo "<option value="$year" $select>$year</option>rn"; } echo "</select></form><table border=0 align=center>"; /*打印星期标头*/ for($week = 0; $week < count($this->week); $week++){ echo "<td>".$this->week[$week]; } /*打印所有日期*/ for($tmpd = 1; $tmpd <= date("t",mktime(0,0,0,$this->month,$this->day,$this->year)); $tmpd++){ if(strcmp($tmpd, $this->day) == 0){ //获得当前日期,做标记 $flag="bgcolor='#ff0000'"; }else{ $flag=" bgcolor='#ffffff'"; } if($tmpd == 1){ echo "<tr>"; //补充打印 for($i = 0; $i < $firstDay; $i++){ echo "<td>"; } } if(strcmp($this->getWeek($this->year, $this->month, $tmpd), 0) == 0){ echo "<tr><td align=center $flag>$tmpd"; }else{ echo "<td align=center $flag>$tmpd"; } } echo "</table></div>"; } } $obj = new Calendar(); $obj->out(); ?>
文章网址:http://www.phprm.com/code/fc74027bf575ef6be3601823aae21f94.html
随意转载^^但请附上教程地址。