...
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; ?>
星期日 |
星期一 |
星期二 |
星期三 |
星期四 |
星期五 |
星期六 |
for($i = 0; $i{ echo “ | ”; }$j=1;
while($j{ echo “
$j | ”; $week = ($start_week+$j-1)%7;if($week ==6){ echo “nt
n”; if($j != $day_num) echo “tntt”; else $end = true; } $j++; } while($week%7 != 6) { echo “ | ”; $week++; } if(!$end) echo “n ”; ?>
|
高级一点类
代码如下 | 复制代码 |
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); echo '
';
for ($i=0; $i echo ' | ';
}
for ($j=1; $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 ''.' | ';
echo ''.' | ';
echo ' | ';
echo ''.'>'.' | ';
echo ''.'>>'.' | ';
echo '
';
}
private function preYearUrl($year,$month)
{
$year = ($this->year
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 } 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(); ?>
|