Start · Sprachen · PHP · Referenz · easter_days

easter_days

Funktion

Gibt die Anzahl der Tage zurück, die zwischen dem 21. März und dem Ostersonntag eines bestimmten Jahres liegen.

seit PHP 4.0.0 Kategorie: date

Signatur

easter_days(int $year = 0, int $mode = CAL_EASTER_DEFAULT): int

Beschreibung

easter_days() berechnet, wie viele Tage nach dem 21. März der Ostersonntag im angegebenen Jahr fällt. Das Ergebnis kann genutzt werden, um das genaue Datum von Ostern zu ermitteln, indem man den Wert zum 21. März addiert.

Der optionale Parameter mode bestimmt, ob die Berechnung nach dem gregorianischen oder dem julianischen Kalender erfolgt. Standardmäßig wird für Jahre ab 1582 der gregorianische Kalender verwendet, für frühere Jahre der julianische. Die Konstanten CAL_EASTER_ROMAN und CAL_EASTER_ALWAYS_GREGORIAN bzw. CAL_EASTER_ALWAYS_JULIAN ermöglichen eine explizite Steuerung.

Wird year nicht angegeben oder auf 0 gesetzt, wird das aktuelle Jahr verwendet. Diese Funktion ist besonders nützlich, wenn bewegliche christliche Feiertage (z. B. Karfreitag, Pfingsten, Fronleichnam) berechnet werden sollen, da diese alle vom Osterdatum abhängen.

Beachte, dass die Erweiterung Calendar nicht immer standardmäßig aktiviert ist; bei Bedarf muss sie in der php.ini eingebunden oder kompiliert werden.

Parameter

Name Typ Default Beschreibung
$year int 0 Das Jahr, für das das Osterdatum berechnet werden soll (vierstellige Jahreszahl). Wird 0 übergeben oder der Parameter weggelassen, wird das aktuelle Jahr verwendet.
$mode int CAL_EASTER_DEFAULT Legt den Kalender fest, nach dem die Berechnung erfolgt. Mögliche Werte: CAL_EASTER_DEFAULT, CAL_EASTER_ROMAN, CAL_EASTER_ALWAYS_GREGORIAN, CAL_EASTER_ALWAYS_JULIAN.

Rückgabewert

Typ
int
Beschreibung
Gibt die Anzahl der Tage zurück, die zwischen dem 21. März und dem Ostersonntag des angegebenen Jahres liegen. Der Wert ist immer eine nicht-negative ganze Zahl.

Beispiele

Osterdatum für ein bestimmtes Jahr berechnen

<?php
// Ostersonntag 2024 berechnen
$year = 2024;
$days = easter_days($year);

// 21. März als Ausgangsdatum
$base = mktime(0, 0, 0, 3, 21, $year);
$easter = $base + ($days * 86400);

echo 'Ostersonntag ' . $year . ': ' . date('d.m.Y', $easter);
?>
Ostersonntag 2024: 31.03.2024

Bewegliche Feiertage rund um Ostern berechnen

<?php
$year = 2024;
$days = easter_days($year);
$easter = mktime(0, 0, 0, 3, 21 + $days, $year);

$feiertage = [
    'Karfreitag'   => -2,
    'Ostersonntag' =>  0,
    'Ostermontag'  =>  1,
    'Christi Himmelfahrt' => 39,
    'Pfingstsonntag'     => 49,
    'Pfingstmontag'      => 50,
    'Fronleichnam'       => 60,
];

foreach ($feiertage as $name => $offset) {
    $datum = $easter + ($offset * 86400);
    echo $name . ': ' . date('d.m.Y', $datum) . PHP_EOL;
}
?>
Karfreitag: 29.03.2024 Ostersonntag: 31.03.2024 Ostermontag: 01.04.2024 Christi Himmelfahrt: 09.05.2024 Pfingstsonntag: 19.05.2024 Pfingstmontag: 20.05.2024 Fronleichnam: 30.05.2024

// Wichtig · Fallstricke

Die Funktion gehört zur Calendar-Erweiterung (ext/calendar). Unter Windows ist sie standardmäßig aktiviert; unter Linux/macOS muss PHP ggf. mit --enable-calendar kompiliert werden.

Alternativ zur manuellen Berechnung über mktime kann auch easter_date() verwendet werden, die direkt einen Unix-Timestamp für den Ostersonntag zurückgibt – jedoch nur für Jahre zwischen 1970 und 2037 (Unix-Timestamp-Bereich). easter_days() funktioniert hingegen für einen deutlich größeren Jahresbereich und ist daher flexibler.