Start · Sprachen · PHP · Referenz · easter_date

easter_date

Funktion

Gibt den Unix-Zeitstempel für die lokale Mitternacht des Ostersonntags im angegebenen Jahr zurück.

seit PHP 4.0.0 Kategorie: date

Signatur

easter_date(int $year = idate('Y')): int

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

Typ
int
Beschreibung
Unix-Zeitstempel der lokalen Mitternacht (00:00:00) am Ostersonntag des angegebenen Jahres. Für Jahre außerhalb des 32-Bit-Zeitstempelbereichs (vor 1970 oder nach 2037) wird eine Warnung ausgegeben und -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;
Ostersonntag 2025: 20.04.2025 Karfreitag 2025: 18.04.2025 Pfingstsonntag 2025: 08.06.2025

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));
}
2023: 09. April 2024: 31. März 2025: 20. April 2026: 05. April 2027: 28. März 2028: 16. April

// 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.