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 " ". " "; /*打印星期标头*/ for($week = 0; $week < count($this->week); $week++){ echo "
".$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 "
| "; //补充打印 for($i = 0; $i < $firstDay; $i++){ echo ""; } } if(strcmp($this->getWeek($this->year, $this->month, $tmpd), 0) == 0){ echo " | $tmpd"; }else{ echo " | $tmpd"; } } echo " | "; } }$obj = new Calendar(); $obj->out(); ?>
|