function r(){
list($usec, $sec) = explode(' ', microtime());
$seed = (float) $sec + ((float) $usec * 100000);
srand($seed);
return rand();
}
require_once 'MonthCal.php';
for($i = 1; $i <= 12; $i++) {
$mCal =& MonthCal::next($mCal);
$mGrid =& $mCal->grid();
// ... здесь можно ...
// ....... вывести хтмл
}
$mCal =& new MonthCal(12, 2003);
$mGrid =& $mCal->grid();
<?php
class MonthCal {
var $daytab = array(31,28,31,30,31,30,31,31,30,31,30,31);
function MonthCal($month, $year) {
if((0 == $year % 4) && ($year % 100 != 0) || (0 == $year % 400)) {
$this->daytab[1] = 29;
}
$this->month = $month;
$this->year = $year;
}
function daysInMonth() {
return $this->daytab[$this->month - 1];
}
function &grid() {
$weeks = array();
$week = array_fill(1, 7, null);
for($day = 1; $day <= $this->daysInMonth(); $day++) {
$wday = $this->getDayOfWeek($day);
$week[$wday] = $day;
if((7 == $wday) || ($this->daysInMonth() == $day)) {
$wn += array_push($weeks, $week);
$week = array_fill(1, 7, null);
}
}
return $weeks;
}
function getDayOfWeek($mday, $debug = null) {
$ts = mktime(1, 1, 1, $this->month, $mday, $this->year);
$d = getdate($ts); ($wday = $d['wday']) || ($wday = 7);
return $wday;
}
function &next($mCal = null) {
if(is_object($mCal)) {
if(12 == $mCal->month) {
$m = 1; $y = $mCal->year + 1;
} else { $m = $mCal->month + 1; $y = $mCal->year; }
$cal =& new MonthCal($m, $y);
} else {
$d = getdate();
$cal =& new MonthCal($d['mon'], $d['year']);
}
return $cal;
}
}
?>
не сочти за придиркуАвтор оригинала: XtremallyPurpur
еще к нему функция нужна вот такая:
PHP:function dayofweek($day){ switch ($day){ case 0: return "Пон"; case 1: return "Вт"; case 2: return "Ср"; case 3: return "Чт"; case 4: return "Пят"; case 5: return "Сб"; case 6: return "Вск"; default: die("Strange error."); } }
<?php
function dayofweek($day){
static $days = array('Пн','Вт','Ср','Чт','Пт','Сб','Вс');
if (!isset($days[$day])) exit('Strange error'); // если угодно :)
return $days[$day];
}
?>