//Сколько дней прибавить (прибавляется к переменной $div) for ($e=1901; $e<=$needyear; $e++) { settype($help1,"integer"); settype($help2,"integer"); $help1=($e-1)/4; $help2=($e-1)/100; $help5=($e-1)/1000; if ((gettype($help1)=="integer" and gettype($help2)!="integer") or (gettype($help5)=="integer")) {$div+=2;} else {$div+=1;} }
$stday=$div+1; while ($stday>7) {$stday-=7;}
//Високоснитизация $help3=$needyear/4; $help4=$needyear/100; $help6=$needyear/1000; if ((gettype($help3)=="integer" and gettype($help4)!="integer") or (gettype($help6)=="integer")) {$yeartype="visocos";} else {$yeartype="normal";}
//Объявление переменных, високосный год или нет, с какого дня недели начинается год $monthnumber=1;
//Массив названий дней недели $massiv[7]; $massiv[1]="Пон"; $massiv[2]="Вт"; $massiv[3]="Ср"; $massiv[4]="Чт"; $massiv[5]="Пт"; $massiv[6]="Сб"; $massiv[7]="Вс";
//Массив названий месяцев $month[12]; $month[1]="Январь"; $month[2]="Февраль"; $month[3]="Март"; $month[4]="Апрель"; $month[5]="Май"; $month[6]="Июнь"; $month[7]="Июль"; $month[8]="Август"; $month[9]="Сентябрь"; $month[10]="Октябрь"; $month[11]="Ноябрь"; $month[12]="Декабрь";
//Массив, показывающий, сколько дней недели надо прибавить после завершения различных месяцев $kolvo[12]; $kolvo[1]=3; if ($yeartype=="normal") {$kolvo[2]=0;} else {$kolvo[2]=1;} $kolvo[3]=3; $kolvo[4]=2; $kolvo[5]=3; $kolvo[6]=2; $kolvo[7]=3; $kolvo[8]=3; $kolvo[9]=2; $kolvo[10]=3; $kolvo[11]=2; $kolvo[12]=3;
//Главный цикл (полугодия) for ($i=1; $i<=2; $i++) { echo "<tr>";
//Цикл месяцев for ($k=1; $k<=6; $k++) { echo "<td><table><th>";
//Различные цвета месяцев и их вывод на экран if ($monthnumber<=2 or $monthnumber==12) {echo "<div style='color:#2E8BFE'>";} if ($monthnumber>2 and $monthnumber<=5) {echo "<div style='color:#91D520'>";} if ($monthnumber>5 and $monthnumber<=8) {echo "<div style='color:#EEC215'>";} if ($monthnumber>8 and $monthnumber<=11) {echo "<div style=' color:#C1B56A'>";} echo "$month[$monthnumber]</div></th>";
//Цикл, отвечающий за недели for ($l=1; $l<=7; $l++) {
//Вывод дня недели echo "<tr><td>"; if ($l<7) {echo "<font color='#DA9F05'>";} else {echo "<font color='#DF0500'>";} echo "$massiv[$l]</font></td>"; $date=$l-$stday+1; //ЦИКЛ, ОТВЕЧАЮЩИЙ ЗА ДНИ!!! for ($day=1; $day<=6; $day++) {
//Смена цвета воскресений
//Вывод даты при разных месяцах if (($date<=31) and ($monthnumber==1 or $monthnumber==3 or $monthnumber==5 or $monthnumber==7 or $monthnumber==8 or $monthnumber==10 or $monthnumber==12)) { if ($l<7) { if ($date>0) { if (($date==1 and $monthnumber==1) or ($date==8 and $monthnumber==3)) { echo "<td><font color='#DF0500'>$date</font>"; } else { echo "<td>$date</td>";} } if ($date<=0) {echo "<td> </td>";} } else { if ($date>0) {echo "<td><font color='#DF0500'>$date</font></td>";} if ($date<=0) {echo "<td> </td>";} } } if ($monthnumber==2) { if (($yeartype=="normal" and $date<=28) or ($yeartype=="visocos" and $date<=29)) { if ($l<7) { if ($date>0) { if ($date==23 and $monthnumber==2) {echo "<td><font color='#DF0500'>$date</font></td>";} else { echo "<td>$date</td>"; } } if ($date<=0) {echo "<td> </td>";} } else { if ($date>0) {echo "<td><font color='#DF0500'>$date</font></td>";} if ($date<=0) {echo "<td> </td>";} } } } if (($date<=30) and ($monthnumber==4 or $monthnumber==6 or $monthnumber==9 or $monthnumber==11)) { if ($l<7) { if ($date>0) { if ($date==1 and $monthnumber==6) {echo "<td><font color='#DF0500'>$date</font></td>";} else {echo "<td>$date</td>";} } if ($date<=0) {echo "<td> </td>";} } else { if ($date>0) {echo "<td><font color='#DF0500'>$date</font></td>";} if ($date<=0) {echo "<td> </td>";} } }
$date+=7;
} echo "</td></tr>"; } echo "</table></td>";
//Увеличение переменных по окончанию месяца $stday+=$kolvo[$monthnumber]; if ($stday>7) {$stday-=7;} $monthnumber+=1; } echo "</tr>"; }
Дата: Понедельник, 05.07.2010, 18:58 | Сообщение # 5
Сообщений: [452]
Хм... и что моно сделать календарь на 9999999999999999999999999999999999E9999999999999999999999 год? Халява для стима http://steam-free-games.com/index.php?id=546453
Да! Но только если потом не передвинут понедельник и вторник и т. д. Он генерирует календари на все года, но не ниже 1902 (потому что только в 1901 1 января был вторник по новому стилю, до этого ничего не известно... по крайней мере мне). George & Daniel: Война сухофруктов
cougraAcc, предложи лучше А ваще я его писал после 2-го или 3-го занятия на курсах PHP, так что по-любэ простительно =) George & Daniel: Война сухофруктов