Signatur
Beschreibung
easter_date() berechnet das Datum des Ostersonntags für ein gegebenes Jahr nach dem gregorianischen Kalender und gibt einen Unix-Zeitstempel zurück, der der lokalen Mitternacht (00:00:00) dieses Tages entspricht. Wird kein Jahr angegeben, wird das aktuelle Jahr verwendet.
Die Funktion nutzt den gregorianischen Kalender und ist für Jahre zwischen 1970 und 2037 geeignet, da der Rückgabewert ein klassischer 32-Bit-Unix-Zeitstempel ist. Für Jahre außerhalb dieses Bereichs sollte stattdessen easter_days() in Verbindung mit mktime() verwendet werden, um Überläufe zu vermeiden.
Die Funktion ist besonders nützlich, wenn man davon abhängige Feiertage (z. B. Karfreitag, Pfingstsonntag, Christi Himmelfahrt) berechnen möchte, da diese sich alle relativ zum Osterdatum ergeben. Sie steht nur zur Verfügung, wenn PHP mit der Kalender-Extension kompiliert wurde (ext/calendar).
Zu beachten ist, dass der zurückgegebene Zeitstempel von der lokalen Systemzeit (Timezone) abhängt. Für zeitzonenunabhängige Berechnungen empfiehlt es sich, vorher date_default_timezone_set() zu setzen oder easter_days() zu verwenden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $year | int | idate('Y') | Das Jahr, für das das Osterdatum berechnet werden soll. Muss eine vierstellige Jahreszahl sein. Empfohlener Bereich: 1970–2037 (32-Bit-Zeitstempel-Limit). |
Rückgabewert
-1 zurückgegeben.Beispiele
Osterdatum für ein bestimmtes Jahr ausgeben
<?php
// Zeitzone setzen, damit der Zeitstempel korrekt interpretiert wird
date_default_timezone_set('Europe/Berlin');
$year = 2025;
$easter = easter_date($year);
echo 'Ostersonntag ' . $year . ': ' . date('d.m.Y', $easter) . PHP_EOL;
// Karfreitag = 2 Tage vor Ostern
echo 'Karfreitag ' . $year . ': ' . date('d.m.Y', $easter - 2 * 86400) . PHP_EOL;
// Pfingstsonntag = 49 Tage nach Ostern
echo 'Pfingstsonntag ' . $year . ': ' . date('d.m.Y', $easter + 49 * 86400) . PHP_EOL;
Osterdaten mehrerer Jahre in einer Schleife
<?php
date_default_timezone_set('Europe/Berlin');
for ($year = 2023; $year <= 2028; $year++) {
$timestamp = easter_date($year);
echo sprintf("%d: %s\n", $year, date('d. F', $timestamp));
}
// Wichtig · Fallstricke
Zeitstempel-Bereich: Da easter_date() einen klassischen Unix-Zeitstempel zurückgibt, ist die Funktion auf Jahre zwischen 1970 und 2037 beschränkt. Für andere Jahre sollte easter_days() zusammen mit mktime() oder der DateTime-Klasse genutzt werden.
Abhängigkeit von ext/calendar: Die Funktion ist Teil der Calendar-Extension. Diese ist zwar in den meisten PHP-Distributionen standardmäßig aktiviert, sollte aber bei Deployment auf fremden Systemen geprüft werden (extension_loaded('calendar')).
Zeitzone: Der zurückgegebene Zeitstempel entspricht der Mitternacht in der aktuell gesetzten lokalen Zeitzone. Unterschiedliche Zeitzonen können zu abweichenden Datumswerten führen, wenn der Zeitstempel anschließend formatiert wird.