PHP 8.4.1 Released!

easter_days

(PHP 4, PHP 5, PHP 7, PHP 8)

easter_days Anzahl der Tage zwischen dem 21. März und Ostersonntag

Beschreibung

easter_days(?int $year = null, int $mode = CAL_EASTER_DEFAULT): int

Berechnet die Anzahl der Tage zwischen dem 21. März und Ostersonntag für das Jahr year.

Die Funktion kann an Stelle von easter_date() genutzt werden um auch für Jahre außerhalb des Wertebereichs von Unix Timestamps (also vor 1970 bzw. nach 2037) das Osterdatum zu bestimmen.

Das Osterdatum wurde von dem Konzil von Nicea im Jahr 325 auf den ersten Sonntag nach dem ersten Frühlingsvollmond nach der Tag- und Nachtgleiche festgelegt. Es wird dabei angenommen das die Tag- und Nachtgleiche immer auf den 21. März fällt so daß sich die Berechnung auf die Bestimmung des nächsten Vollmonds und des darauf folgenden Sonntags reduziert. Die dazu benutzten Algorithmen wurden um das Jahr 532 von Dionysius Exiguus eingeführt. Innerhalb des Julianischen Kalenders (für Jahre vor 1753) wird der Bestimmung der Mondphasen ein einfacher Zyklus von 19 Jahren zugrunde gelegt. Im Gregorianischen Kalender (für Jahre nach 1753 - erdacht von Clavius und Lilius, zuerst eingeführt von Papst Gregor XIII im Oktober 1582 und im September 1752 auch von Britanien und seinen Kolonien übernommen) wurden zwei zusätzliche Korrekturfaktoren eingeführt um die Genauigkeit der Berechnungen zu erhöhen.

Parameter-Liste

year

Das Jahr als eine Zahl größer 0. Wenn nicht angegeben oder null, wird das aktuelle Jahr gemäß der lokalen Zeit verwendet.

mode

Ermöglicht die Berechnung auf Basis des Gregorianischen Kalenders für den Zeitraum von 1582 bis 1752 wenn CAL_EASTER_ROMAN übergeben wird. Eine vollständige Liste der Kalenderkonstanten finden Sie unter Kalendarkonstanten.

Rückgabewerte

Die Anzahl der Tage die der Ostersonntag im gegebenen Jahr hinter dem 21ten März liegt.

Changelog

Version Beschreibung
8.0.0 year ist jetzt nullbar.

Beispiele

Beispiel #1 easter_days() Beispiel

<?php

echo easter_days(1999); // 14, also April 4
echo easter_days(1492); // 32, also April 22
echo easter_days(1913); // 2, also March 23

?>

Siehe auch

  • easter_date() - Zeitpunkt des Osterfestes (0 Uhr) als Unix-Timestamp

add a note

User Contributed Notes 2 notes

up
5
p dot rijt at caesar dot nl
9 years ago
This function returns an array of timestamp corresponding to Dutch National holidays. Liberation Day (Bevrijdingsdag) is added as a National holiday once every five years (2000, 2005, 2010, ...).

<?php
function getHolidays($year = null) {
if (
$year === null) {
$year = intval(date('Y'));
}

$easterDate = easter_date($year);
$easterDay = date('j', $easterDate);
$easterMonth = date('n', $easterDate);
$easterYear = date('Y', $easterDate);

$holidays = array(
// Nieuwjaarsdag
mktime(0, 0, 0, 1, 1, $year),
// 1e Kerstdag
mktime(0, 0, 0, 12, 25, $year),
// 2e Kerstdag
mktime(0, 0, 0, 12, 26, $year)
);

// Bevrijdingsdag
if (($year % 5) == 0) {
$holidays[] = mktime(0, 0, 0, 5, 5, $year);
}

// Koninginnedag (< 2014) of Koningsdag (>= 2014).
// Verplaats naar zaterdag als het valt op zondag.
if ($year <= 2013) { // Koninginnedag <= 2013
if (date('w', mktime(0, 0, 0, 4, 30, $year)) == 0) { // Op zondag?
$holidays[] = mktime(0, 0, 0, 4, 29, $year); // Verplaats naar zaterdag
} else {
$holidays[] = mktime(0, 0, 0, 4, 30, $year); // Koninginnedag
}
} else {
// Koningsdag > 2014
if (date('w', mktime(0, 0, 0, 4, 27, $year)) == 0) { // Op zondag?
$holidays[] = mktime(0, 0, 0, 4, 26, $year); // Verplaats naar zaterdag
} else {
$holidays[] = mktime(0, 0, 0, 4, 27, $year); // Koningsdag
}
}

// Onderstaande dagen hebben een datum afhankelijk van Pasen
// Goede Vrijdag (= pasen - 2)
$holidays[] = strtotime('-2 days', mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear));
// 1e Paasdag
$holidays[] = mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear);
// 2e Paasdag (= pasen +1)
$holidays[] = strtotime('+1 days', mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear));
// Hemelvaartsdag (= pasen + 39)
$holidays[] = strtotime('+39 days', mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear));
// 1e Pinksterdag (= pasen + 49)
$holidays[] = strtotime('+49 days', mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear));
// 2e Pinksterdag (= pasen + 50)
$holidays[] = strtotime('+50 days', mktime(0, 0, 0, $easterMonth, $easterDay, $easterYear));

sort($holidays);

return
$holidays;
}

$holidays = getHolidays(2014);

foreach (
$holidays as $holiday) {
echo
date('d-M-Y', $holiday) . '<br>';
}
?>
up
1
ian at eiloart dot com-NOSPAM
23 years ago
Also, be aware that the eastern orthodox churches sometimes have different dates for easter. See, for example <http://webexhibits.org/calendars/calendar-christian-easter.html>. And note that the dates of easter a subject to change, for example, the churches might some day decide to unify the dates.
To Top