Benutzer-Werkzeuge

Webseiten-Werkzeuge


comp:osterdat
Übersetzungen dieser Seite?:

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 :-)

comp/osterdat.txt · Zuletzt geändert: 2009-09-23 1330 von werner