W3docs

easter_days()

Lernen Sie, wie Sie PHP's easter_days() Funktion nutzen, um die Anzahl der Tage nach dem 21. März zu berechnen, auf die Ostern fällt.

Einführung

Willkommen zu unserem Leitfaden zur Berechnung des Osterdatums mit PHP. Wir zeigen Ihnen, wie Sie das Datum für ein beliebiges Jahr ermitteln und in Ihren Projekten implementieren können. Wir erkunden die Geschichte von Ostern und die mathematischen Berechnungen, die zur Bestimmung des Datums erforderlich sind. Am Ende dieses Leitfadens werden Sie ein fundiertes Verständnis davon haben, wie man das Osterdatum mit PHP berechnet.

Was ist Ostern?

Ostern ist ein christliches Fest, das die Auferstehung Jesu Christi von den Toten feiert. Es ist eines der wichtigsten Feste im christlichen Kalender und wird weltweit begangen. Ostern fällt jedes Jahr auf ein anderes Datum, und das Osterdatum wird durch eine Reihe komplexer Berechnungen bestimmt.

Geschichte von Ostern

Ostern wird von Christen seit über 2.000 Jahren gefeiert. Der genaue Ursprung des Festes ist unklar, es wird jedoch angenommen, dass es aus heidnischen Frühlingsfeiern hervorgegangen ist. Es wird vermutet, dass der Name „Ostern" vom altenglischen Wort „ēastre" stammt, einem heidnischen Fest zur Feier der Frühlings-Tagundnachtgleiche.

In der christlichen Tradition feiert Ostern die Auferstehung Jesu Christi von den Toten. Laut der Bibel wurde Jesus am Karfreitag gekreuzigt und stand drei Tage später, am Ostersonntag, von den Toten auf. Ostern wird am Sonntag nach dem ersten Vollmond nach der Frühjahrs-Tagundnachtgleiche gefeiert, der in der Regel zwischen dem 22. März und dem 25. April liegt.

Berechnung des Osterdatums

Das Osterdatum wird durch eine Reihe komplexer Berechnungen bestimmt, die auf den Zyklen des Mondes und der Sonne basieren. Die Berechnungen wurden erstmals vom Konzil von Nicäa im Jahr 325 n. Chr. entwickelt und im Laufe der Jahrhunderte verfeinert.

Das Osterdatum wird mit folgender Formel berechnet:

a = year mod 19
b = year mod 4
c = year mod 7
d = (19 * a + 24) mod 30
e = (2 * b + 4 * c + 6 * d + 5) mod 7
f = d + e + 22

Wenn f kleiner oder gleich 31 ist, fällt Ostern auf den f. März. Wenn f größer als 31 ist, fällt Ostern auf den f - 31. April.

Hinweis: Dieser klassische Algorithmus funktioniert für die meisten Jahre, hat jedoch bekannte Grenzfälle (z. B. 1954, 1981, 2049, 2079, 2099), bei denen das Ergebnis um einen Tag abweichen kann. Für Produktionsanwendungen sollten Sie eine dedizierte Kalenderbibliothek verwenden oder die vollständigen Gregorianischen Korrekturregeln implementieren.

PHP zur Berechnung des Osterdatums verwenden

Nachdem wir nun die Geschichte und die Berechnungen hinter dem Osterdatum verstehen, sehen wir uns an, wie wir PHP verwenden können, um das Osterdatum für ein beliebiges Jahr zu berechnen. Wir beginnen damit, eine PHP-Funktion zu erstellen, die ein Jahr als Argument entgegennimmt und das Osterdatum für dieses Jahr zurückgibt.

Die Funktion folgt diesen Schritten:

  1. Berechne die Reste a, b und c basierend auf dem Eingabejahr.
  2. Berechne die Zwischenwerte d und e mithilfe der Mond- und Sonnenzyklusformeln.
  3. Bestimme f, das den Tages-Offset ab dem 22. März darstellt.
  4. Wandle f in Monat und Tag um und formatiere das Ergebnis mit DateTime. (Siehe date_date_set() und date_format() für die zugrunde liegenden Datumshilfsfunktionen.)

Der PHP-Code zur Berechnung des Osterdatums

<?php

function get_easter_date($year) {
  $a = $year % 19;
  $b = $year % 4;
  $c = $year % 7;
  $d = (19 * $a + 24) % 30;
  $e = (2 * $b + 4 * $c + 6 * $d + 5) % 7;
  $f = $d + $e + 22;
  if ($f <= 31) {
    $month = 3;
    $day = $f;
  } else {
    $month = 4;
    $day = $f - 31;
  }
  // Use DateTime for modern object-oriented PHP (mktime is legacy, not strictly deprecated)
  $date = new DateTime();
  $date->setDate($year, $month, $day);
  return $date->format('Y-m-d');
}

echo get_easter_date(2024); // Outputs: 2024-03-31

Die eingebaute easter_days() Funktion

Der Kapiteltitel verweist auf PHP's native easter_days() Funktion, die die Standardmethode zur Berechnung von Ostern in Produktionscode ist. Diese Funktion gibt die Anzahl der Tage nach dem 21. März zurück, auf die Ostern für ein bestimmtes Jahr fällt. Sie verarbeitet automatisch alle Kalenderkorrekturen und Grenzfälle und macht manuelle Modulo-Arithmetik überflüssig.

echo easter_days(2024); // Returns 10 (March 21 + 10 days = March 31)

Während der benutzerdefinierte Algorithmus oben für Lernzwecke nützlich ist, wird easter_days() für reale Anwendungen empfohlen, da sie präzise, einfach und mit integrierter Behandlung von Schaltjahren und Gregorianischen Kalenderanpassungen ausgestattet ist.

Um den Offset in ein tatsächliches Kalenderdatum umzuwandeln, kombinieren Sie easter_days() mit einem Basisdatum für den 21. März:

$year = 2024;
$easter = new DateTime("$year-03-21");
$easter->modify('+' . easter_days($year) . ' days');
echo $easter->format('Y-m-d'); // Outputs: 2024-03-31

PHP bietet außerdem die eng verwandte Funktion easter_date(), die das Osterdatum direkt als Unix-Zeitstempel anstelle eines Tages-Offsets zurückgibt.

Verwandte Funktionen

Übung

Übung
Welchen Zweck hat die Funktion easter_days() in PHP?
Welchen Zweck hat die Funktion easter_days() in PHP?
Was this page helpful?