码迷,mamicode.com
首页 > Web开发 > 详细

php日历

时间:2015-09-23 17:26:42      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

<?php
class Calendar {
	private $year;
	private $month;
	private $val;
	private $weeks = array (‘日‘, ‘一‘, ‘二‘, ‘三‘, ‘四‘, ‘五‘, ‘六‘ );
	
	function __construct($options = array(), $val) {
		$this->year = date ( ‘Y‘ );
		$this->month = date ( ‘m‘ );
		$this->val = $val;
		
		$vars = get_class_vars ( get_class ( $this ) );
		foreach ( $options as $key => $value ) {
			if (array_key_exists ( $key, $vars )) {
				$this->$key = $value;
			}
		}
	}
	
	function display() {
		$value .= ‘<table  class="calendar">‘;
		$value .= $this->showChangeDate ();
		$value .= $this->showWeeks ();
		$value .= $this->showDays ( $this->year, $this->month );
		$value .= ‘</table>‘;
		return $value;
	}
	
	private function showWeeks() {
		$value .= ‘<tr>‘;
		foreach ( $this->weeks as $title ) {
			$value .= ‘<th>‘ . $title . ‘</th>‘;
		}
		$value .= ‘</tr>‘;
		return $value;
	}
	
	private function showDays($year, $month) {
		 $nowtime = mktime(0,0,0,$month,1,$year);//当月1号转为秒 
	     $daysofmonth = date(t,$nowtime);//当月天数 
	     $weekofbeginday = date(w,$nowtime);//当月第一天是星期几 
	     $weekofendday = date(w,mktime(0,0,0,$month+1,0,$year));//当月最后一天是星期几 
	     $daysofprevmonth = date(t,mktime(0,0,0,$month,0,$year));//上个月天数 
		 $count = 1;//计数 
    	 //列出上月后几天 
   		 for($i = 1 ; $i <= $weekofbeginday ; $i++) 
         { 
             $value .= "<td>".($daysofprevmonth-$weekofbeginday+$i)."</td>"; 
             $count++; 
         } 
	     //当月全部 
	     for($i = 1 ; $i <= $daysofmonth ; $i++) 
	     { 
	         $css = ($count%7==0 || $count%7==1)?"weekday":"normalday"; 
	         if($i == $today) $css .= "today"; 
	         $value .= "<td class=‘".$css."‘>".$i."</td>"; 
	         if($count%7==0)  $value .= "</tr><tr>"; 
	         $count++; 
	     }

	     //下月前几天 
    	 for ($i = 1;$i <= 6-$weekofendday;$i++) 
         { 
            $value .= "<td class=‘othermonth‘>".$i."</td>"; 
         } 		
		 $value .= ‘</tr>‘;
		 return $value;
	}
	
	private function showChangeDate() {
		
		$url = basename ( $_SERVER [‘PHP_SELF‘] );
		
		$value = ‘<tr>‘;
		$value .= ‘<td><a href="?‘ . $this->preYearUrl ( $this->year, $this->month ) . ‘">‘ . ‘上年‘ . ‘</a></td>‘;
		$value .= ‘<td><a href="?‘ . $this->preMonthUrl ( $this->year, $this->month ) . ‘">‘ . ‘上月‘ . ‘</a></td>‘;
		$value .= ‘<td colspan="3"><form>‘;
		
		$value .= ‘<select name="year" onchange="window.location=\‘‘ . $url . ‘?year=\‘+this.options[selectedIndex].value+\‘&month=‘ . $this->month . ‘\‘">‘;
		for($ye = 1970; $ye <= 2038; $ye ++) {
			$selected = ($ye == $this->year) ? ‘selected‘ : ‘‘;
			$value .= ‘<option ‘ . $selected . ‘ value="‘ . $ye . ‘">‘ . $ye . ‘</option>‘;
		}
		$value .= ‘</select>‘;
		$value .= ‘<select name="month" onchange="window.location=\‘‘ . $url . ‘?year=‘ . $this->year . ‘&month=\‘+this.options[selectedIndex].value+\‘\‘">‘;
		
		for($mo = 1; $mo <= 12; $mo ++) {
			$selected = ($mo == $this->month) ? ‘selected‘ : ‘‘;
			$value .= ‘<option ‘ . $selected . ‘ value="‘ . $mo . ‘">‘ . $mo . ‘</option>‘;
		}
		$value .= ‘</select>‘;
		$value .= ‘</form></td>‘;
		$value .= ‘<td><a href="?‘ . $this->nextMonthUrl ( $this->year, $this->month ) . ‘">‘ . ‘下月‘ . ‘</a></td>‘;
		$value .= ‘<td><a href="?‘ . $this->nextYearUrl ( $this->year, $this->month ) . ‘">‘ . ‘下年‘ . ‘</a></td>‘;
		$value .= ‘</tr>‘;
		return $value;
	}
	
	private function preYearUrl($year, $month) {
		$year = ($this->year <= 1970) ? 1970 : $year - 1;
		
		return ‘year=‘ . $year . ‘&month=‘ . $month;
	}
	
	private function nextYearUrl($year, $month) {
		$year = ($year >= 2038) ? 2038 : $year + 1;
		
		return ‘year=‘ . $year . ‘&month=‘ . $month;
	}
	
	private function preMonthUrl($year, $month) {
		if ($month == 1) {
			$month = 12;
			$year = ($year <= 1970) ? 1970 : $year - 1;
		} else {
			$month --;
		}
		
		return ‘year=‘ . $year . ‘&month=‘ . $month;
	}
	
	private function nextMonthUrl($year, $month) {
		if ($month == 12) {
			$month = 1;
			$year = ($year >= 2038) ? 2038 : $year + 1;
		} else {
			$month ++;
		}
		return ‘year=‘ . $year . ‘&month=‘ . $month;
	}

}

  

<?php
//获取日历
$year = date ( "Y" );
$month = date ( "m" );
$params = array (‘year‘ => $year, ‘month‘ => $month );
if (isset ( $_GET [‘year‘] ) && isset ( $_GET [‘month‘] )) {
	$params = array (‘year‘ => $_GET [‘year‘], ‘month‘ => $_GET [‘month‘] );
	$year = $_GET [‘year‘];
	$month = $_GET [‘month‘];
}

$cal = new Calendar ( $params, $list_sign );
echo $cal->display ();


?>


 技术分享

php日历

标签:

原文地址:http://my.oschina.net/yonghan/blog/510130

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!