Home >Backend Development >PHP Tutorial >Simple PHP calendar algorithm_PHP tutorial
/**
* Calendar
*
* Copyright(c) 2007 by Chen Yixin (Deep Sky). All rights reserved
* To contact the author write to {@link mailto:shenkong@php.net}
* @author Chen Yixin (Deep Sky)
*/
if (function_exists('date_default_timezone_set')) {
date_default_timezone_set('Asia/Chongqing');
}
$date = isset($_GET['date']) ? $_GET['date'] : date('Y-m-d');
$date = getdate(strtotime($date));
$end = getdate(mktime(0, 0, 0, $date['mon'] + 1, 1, $date['year']) - 1);
$start = getdate(mktime(0, 0, 0, $date['mon'], 1, $date['year']));
$pre = date('Y-m-d', $start[0] - 1);
$next = date('Y-m-d', $end[0] + 86400);
$html = '';
';
$html .= ''; ';
$html .= '- ';
$html .= '' . $date['year'] . ';' . $date['month'] . ' ';
$html .= '+ ';
$html .= '
$arr_tpl = array(0 => '', 1 => '', 2 => '', 3 => '', 4 => '', 5 => '', 6 => '');
$date_arr = array();
$j = 0;
for ($i = 0; $i < $end['mday']; $i++) {
if (!isset($date_arr[$j])) {
$date_arr[$j] = $arr_tpl;
}
$date_arr[$j][($i+$start['wday'])%7] = $i+1;
if ($date_arr[$j][6]) {
$j++;
}
}
foreach ($date_arr as $value) {
$html .= ''; ';
foreach ($value as $v) {
if ($v) {
if ($v == $date['mday']) {
$html .= '' . $v . ' ';
} else {
$html .= '' . $v . ' ';
}
} else {
$html .= ' ';
}
}
$html .= '
}
$html .= '
echo $html;