Benutzer-Werkzeuge

Webseiten-Werkzeuge


comp:osterdat

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

comp:osterdat [2009-09-23 1330] – angelegt wernercomp:osterdat [2022-11-24 0149] (aktuell) – oster- und pfingstmontag werner
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);
 +  $ostermontag     = $ostersonntag +       86400 ;
 +  $himmelfahrt     = $ostersonntag + (39 * 86400);
 +  $pfingstsonntag  = $ostersonntag + (49 * 86400);
 +  $pfingsmontag    = $ostersonntag + (50 * 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 :-)

Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki