====== PHP: Osterdatum berechnen ======
Falls die Funktion ''easter_date()'' mal nicht zur Verfügung steht, lässt sich der Ostersonntag auch so ermitteln:
if (!function_exists('easter_date')) {
/* Quelle: http://www.stadtaus.com/tutorials/ostern_berechnen.php */
function easter_date($injahr)
{
$a = $injahr % 19; # $b = $injahr % 4; $c = $injahr % 7;
$m = number_format(8 * number_format($injahr / 100) + 13) / 25 - 2;
$s = number_format($injahr / 100 ) - number_format($injahr / 400) - 2;
$M = (15 + $s - $m) % 30;
$N = (6 + $s) % 7;
$d = ($M + 19 * $a) % 30;
if ($d == 29) {
$D = 28;
} // if ($d == 29)
elseif ($d == 28 and $a >= 11) {
$D = 27;
} // elseif ($d == 28 and $a >= 11)
else {
$D = $d;
} // else: if ($d == 29)
$e = (2 * ($injahr % 4) + 4 * ($injahr % 7) + 6 * $D + $N) % 7;
$ostersonntag = mktime (0, 0, 0, 3, 21, $injahr) + (($D + $e + 1) * 86400);
return $ostersonntag;
} // function easter_date
} // if (!function...)
Davon abhängig lassen sich dann noch weitere Daten berechnen:
$ostersonntag = easter_date( date('Y') );
$rosenmontag = $ostersonntag - (48 * 86400);
$aschermittwoch = $ostersonntag - (46 * 86400);
$himmelfahrt = $ostersonntag + (39 * 86400);
$pfingstsonntag = $ostersonntag + (49 * 86400);
$fronleichnam = $ostersonntag + (60 * 86400);
$herzjesufreitag = $ostersonntag + (68 * 86400);
Und dann gibt es ja noch die Feiertage, die von Weihnachten abhängen...
function advent1($injahr)
{
$myhilf = mktime(0, 0, 0, 11, 27, $injahr);
while (date("w", $myhilf) != 0) {
$myhilf += 86400;
} // while (date("w", $myhilf) != 0)
$advent1 = $myhilf;
// der Sonntag nach dem 26.11.
return $advent1;
} // function advent1
Davon hängt dann ab (neben den drei anderen Adventen ;-))
$ersterAdvent = advent1( date("Y") );
$bussundbettag = $ersteradvent - (11 * 86400);
Das reicht bestimmt als Inspiration :-) Freunde von Microsoft kennen bestimmt die Seite [[http://msdn.microsoft.com/de-de/library/bb979477.aspx]], die den Code in VB bereitstellt.