Календарь на текущий месяц

Пример формирует календарь на текущий месяц на PHP

Пн Вт Ср Чт Пт Сб Вс
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

// Функция формирует двумерный массив, представляющий собой
// календарь на указанный месяц и год. Массив состоит из строк,
// соответствующих неделям. Каждая строка - массив из семи
// элементов, которые равны числам (или пустой строке, если
// данная клетка календаря пуста).
function makeCal($year, $month) {
  // Получаем номер дня недели для 1 числа месяца. Корректируем
  // его, чтобы воскресенье соответствовало числу 7, а не числу 0.
  $wday = JDDayOfWeek(GregorianToJD($month, 1, $year), 0);
  if ($wday == 0) $wday = 7;
  // Начинаем с этого числа в месяце (если меньше нуля
  // или больше длины месяца, тогда в календаре будет пропуск).
  $n = - ($wday - 2);
  $cal = [];
  // Цикл по строкам.
  for ($y=0; $y<6; $y++) {
    // Будущая строка. Вначале пуста.
    $row = [];
    $notEmpty = false;
    // Цикл внутри строки по дням недели.
    for ($x=0; $x<7; $x++, $n++) {
      // Текущее число >0 и < длины месяца?
      if (checkdate($month, $n, $year)) {
        // Да. Заполняем клетку.
        $row[] = $n;
        $notEmpty = true;
      } else {
        // Нет. Клетка пуста.
        $row[] = "";
      }
    }
    // Если в данной строке нет ни одного непустого элемента,
    // значит, месяц кончился.
    if (!$notEmpty) break;
    // Добавляем строку в массив.
    $cal[] = $row;
  }
  return $cal;
}

// Формируем календарь на текущий месяц.
$now = getdate();
$cal = makeCal($now['year'], $now['mon']);
?>
<!-- Шаблон вывода календаря. -->
<table border=1>
  <tr>
    <td>Пн</td>
    <td>Вт</td>
    <td>Ср</td>
    <td>Чт</td>
    <td>Пт</td>
    <td>Сб</td>
    <td style="color:red">Вс</td>
  </tr>
  <!-- цикл по строкам -->
      <tr>
      <!-- цикл по столбам -->
              <!-- воскресенье - "красный" день -->
        <td style="">
                   </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
                   </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
                   </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
                   </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
                   </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
                   </td>
              <!-- воскресенье - "красный" день -->
        <td style="color:red">
          1        </td>
          </tr>
      <tr>
      <!-- цикл по столбам -->
              <!-- воскресенье - "красный" день -->
        <td style="">
          2        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          3        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          4        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          5        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          6        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          7        </td>
              <!-- воскресенье - "красный" день -->
        <td style="color:red">
          8        </td>
          </tr>
      <tr>
      <!-- цикл по столбам -->
              <!-- воскресенье - "красный" день -->
        <td style="">
          9        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          10        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          11        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          12        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          13        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          14        </td>
              <!-- воскресенье - "красный" день -->
        <td style="color:red">
          15        </td>
          </tr>
      <tr>
      <!-- цикл по столбам -->
              <!-- воскресенье - "красный" день -->
        <td style="">
          16        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          17        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          18        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          19        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          20        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          21        </td>
              <!-- воскресенье - "красный" день -->
        <td style="color:red">
          22        </td>
          </tr>
      <tr>
      <!-- цикл по столбам -->
              <!-- воскресенье - "красный" день -->
        <td style="">
          23        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          24        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          25        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          26        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          27        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          28        </td>
              <!-- воскресенье - "красный" день -->
        <td style="color:red">
          29        </td>
          </tr>
      <tr>
      <!-- цикл по столбам -->
              <!-- воскресенье - "красный" день -->
        <td style="">
          30        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
          31        </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
                   </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
                   </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
                   </td>
              <!-- воскресенье - "красный" день -->
        <td style="">
                   </td>
              <!-- воскресенье - "красный" день -->
        <td style="color:red">
                   </td>
          </tr>
  </table>

Смотрите также:
календарь на javascript
календарь на javascript в виде объекта


.