<?php
header("Content-type: text/html; charset=windows-1251");
function dayOfWeek($d, $m, $y) {
$a = (int)((14 - $m) / 12);
$b = $y - $a;
$c = $m + 12 * $a - 2;
return (7000 + (int)($d + $b + (int)($b / 4) - (int)($b / 100) + (int)($b / 400) + (31 * $c) / 12)) % 7;
}
function isDst($d, $m, $y) {
if (
($m <= 2)
|| ($m - 10 > 0)
|| ($m == 3 && ((int)($d / 25) == 0 || ((int)($d / 25) == 1 && dayOfWeek($d, $m, $y ) > dayOfWeek(24, $m, $y))))
|| ($m == 10 && ((int)($d / 25) == 1 && dayOfWeek($d, $m, $y ) <= dayOfWeek(24, $m, $y)))
) return 0;
return 1;
}
/*
* For test;
*/
$array = array("ВС", "ПН", "ВТ", "СР", "ЧТ", "ПТ", "СБ");
for ($i = 20; $i <= 31; $i++) {
echo $i." | ".((int)($i/25))." | ".$array[dayOfWeek($i, 10, 2012)]." | DST=".isDst($i, 10, 2012)."<br>";
}
?>