Benutzer-Werkzeuge

Webseiten-Werkzeuge


comp:osterdat

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

comp:osterdat [2009-09-23 1330] (aktuell)
werner angelegt
Zeile 1: Zeile 1:
 +====== PHP: Osterdatum berechnen ======
  
 +Falls die Funktion ''​easter_date()''​ mal nicht zur Verfügung steht, lässt sich der Ostersonntag auch so ermitteln:
 +
 +<code php>
 +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...)
 +</​code>​
 +
 +Davon abhängig lassen sich dann noch weitere Daten berechnen:
 +
 +<code php>
 +  $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);
 +</​code>​
 +
 +Und dann gibt es ja noch die Feiertage, die von Weihnachten abhängen...
 +
 +<code php>
 +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
 +</​code>​
 +
 +Davon hängt dann ab (neben den drei anderen Adventen ;-))
 +
 +<code php>
 +$ersterAdvent ​ = advent1( date("​Y"​) );
 +$bussundbettag = $ersteradvent - (11 * 86400);
 +</​code>​
 +
 +Das reicht bestimmt als Inspiration :-)
comp/osterdat.txt · Zuletzt geändert: 2009-09-23 1330 von werner