Signatur
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
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);
?>
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;
}
?>
// 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.