БлогNot. PHP: варианты календаря

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

PHP: варианты календаря

Скину ещё один "календарный" учебный скрипт на PHP. Долго описывать тут нечего, всего есть 14 вариантов календаря на год (год может начаться с любого из семи дней и бывает обычным или високосным). Функция calvars($y1,$y2,$result_form) ищет эти варианты за период лет от $y1 до $y2 включительно и может вернуть:

Нетрудно посчитать, что календарь может повториться через 6 или 11 лет для обычного года, либо через 28 лет - для високосного.

Полный исходник на момент написания и скрипт в работе:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <meta content="text/html; charset=Windows-1251" http-equiv="content-type">
 <title>Варианты календаря</title>
</head>
<body>

<?php

 function is_leapyear ($y) { //1, если год високосный
  return (($y%4==0) and ($y%100!=0) or ($y%400==0) ? 1 : 0);
 }

 function calvars($y1,$y2,$result_form) {
  /* $y1 - год начала периода
     $y2 - год окончания периода
     $result_form - если true, вернуть таблицу с текстом, иначе массив
  */
  $vars = array (
   '0'=>array(),'1'=>array(),'2'=>array(),'3'=>array(),'4'=>array(),'5'=>array(),'6'=>array(),
   '10'=>array(),'11'=>array(),'12'=>array(),'13'=>array(),'14'=>array(),'15'=>array(),'16'=>array()
  ); //всего есть 14 вариантов календаря
  $cols = array ( '#ff0000','#ffff00','#ffc0cb','#008000','#ffa500','#0000ff','#8b00ff');
     //цвета дней недели вс-сб по-тайски :)
  $days=array('Вс','Пн','Вт','Ср','Чт','Пт','Сб');
  $text = '<table cellpadding="2" cellspacing="0" bortder="1"><tr>'."\n";
  $leap_style = ' background-image: url(img/366.png); background-position: right bottom; background-repeat: no-repeat;';
  for ($y=$y1; $y<=$y2; $y++) {
   $wd=date('w',mktime(0,0,0,1,1,$y)); //0-6=Вс..Сб
   $vars[10*is_leapyear($y)+$wd][] = $y;
   $text .= 
    '<td align="center" valign="middle" style="background-color:'.$cols[$wd].'; font-size: x-small;'.
     (is_leapyear($y) ? $leap_style : '').'">'.$y.'<br>'.$days[$wd].'</td>'."\n";
  }
  $text .= '</tr></table>'."\n";
  return ($result_form ? $text : $vars);
 }

 $y1 = 1970;
 $y2 = date('Y')+20;
 echo calvars($y1,$y2,true);
 $vars = calvars($y1,$y2,false);
 //Пример разбора массива вариантов
 $days=array('С воскресенья','С понедельника','Со вторника','Со среды','С четверга','С пятницы','С субботы');
 foreach ($vars as $key=>$value) {
  echo '<p>'.$days[$key%10].', '.($key>9?'366':'365').' дней ('.($key>9?'':'не ').'високосный): ';
  echo implode(', ',$value);
  echo '</p>';
 }
?>
</body></html>

 Скрипт "варианты календаря" онлайн

Внешняя картинка високосного года, использованная в стиле оформления таблички, вот тут.

На 32-разрядных системах подсчёт умрёт к 2039 году.

Люди ищут по теме: С каким годом совпадает календарь 2016? Календарь какого года подойдёт к этому году Совпадение календарей по годам


теги: php учебное дата цвет

комментарии (0)

25.02.2016, 21:32; рейтинг: 2604

  в началопоиск по блогунаписать авторустатистика

Наверх Яндекс.Метрика
© PerS
вход