PHP提供了date()函數,該函數提供了豐富的日期處理功能。現在需要獲得的資料有兩個,第一個是當月的總天數;第二個是該月的第一天所在星期中的第幾天,數字表示0(表示星期天)到6(表示星期六)。
通過date()函數可以很容易獲得上面的資料
| 代碼如下 |
複製代碼 |
$month = $_GET['m']?$_GET['m']:date(‘n’); $year = $_GET['y']?$_GET['y']:date(‘Y’); $start_week = date(‘w’,mktime(0,0,0,$month,1,$year)); $day_num = date(‘t’,mktime(0,0,0,$month,1,$year)); $end = false; ?>
$j=1; while($j<=$day_num) { echo “
if($week ==6){ echo “nt
| 星期日 |
星期一 |
星期二 |
星期三 |
星期四 |
星期五 |
星期六 |
for($i = 0; $i<$start_week; $i++){echo “
| ”;}
$j | ”;$week = ($start_week+$j-1)%7;
n”;if($j != $day_num)echo “t
ntt”;else $end = true;}$j++;}while($week%7 != 6){echo “
| ”;$week++;}if(!$end)echo “n
”;?>
|
進階一點類
echo '
| 代碼如下 |
複製代碼 |
class Calendar { private $year; private $month; private $weeks = array('日','一','二','三','四','五','六'); function __construct($options = array()) { $this->year = date('Y'); $this->month = date('m'); $vars = get_class_vars(get_class($this)); foreach ($options as $key=>$value) { if (array_key_exists($key, $vars)) { $this->$key = $value; } } } function display() { echo '
'; $this->showChangeDate(); $this->showWeeks(); $this->showDays($this->year,$this->month); echo '
'; } private function showWeeks() { echo ' |
'; foreach($this->weeks as $title) { echo '
| '.$title.' | '; } echo '
'; } private function showDays($year, $month) { $firstDay = mktime(0, 0, 0, $month, 1, $year); $starDay = date('w', $firstDay); $days = date('t', $firstDay);
'; for ($i=0; $i<$starDay; $i++) { echo '
| | '; } for ($j=1; $j<=$days; $j++) { $i++; if ($j == date('d')) { echo '
'.$j.' | '; } else { echo '
'.$j.' | '; } if ($i % 7 == 0) { echo '
'; } } echo '
'; } private function showChangeDate() { $url = basename($_SERVER['PHP_SELF']); echo '
'; echo '
| preYearUrl($this->year,$this->month).'">'.'<<'.' | '; echo '
preMonthUrl($this->year,$this->month).'">'.'<'.' | '; echo '
| '; echo '
nextMonthUrl($this->year,$this->month).'">'.'>'.' | '; echo '
nextYearUrl($this->year,$this->month).'">'.'>>'.' | '; echo '
'; } 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; } }
調用方法
| 代碼如下 |
複製代碼 |
$params = array(); if (isset($_GET['year']) && isset($_GET['month'])) { $params = array( 'year' => $_GET['year'], 'month' => $_GET['month'], ); } $params['url'] = 'demo.php'; require_once 'calendar.class.php'; ?> 日曆demo $cal = new Calendar($params); $cal->display(); ?>
|
http://www.bkjia.com/PHPjc/444655.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/444655.htmlTechArticlePHP提供了date()函數,該函數提供了豐富的日期處理功能。現在需要獲得的資料有兩個,第一個是當月的總天數;第二個是該月的第一天所在...