Hi,
easter_date() liefert ja nur den Zeitstempel des Ostersonntages für die Jahre 1970-2027, und dort auch nur für das 'westliche' Osterfest.
Für DateTime gibt es diese Grenzen nicht, es fehlt jedoch eine gleichwertige Funktion für easter_date().
Dafür werden hier 2 Funktionen vorgestellt:
Beide Funktionen liefern ein Objekt vom Typ DateTime für Jahreszahlen von 1600 - 2099 und false bei Fehlern.
Weitere bewegliche Feiertage lassen sich relativ leicht aus den Datum des Osterfestes ableiten.
Beispiel:
LG jspit
easter_date() liefert ja nur den Zeitstempel des Ostersonntages für die Jahre 1970-2027, und dort auch nur für das 'westliche' Osterfest.
Für DateTime gibt es diese Grenzen nicht, es fehlt jedoch eine gleichwertige Funktion für easter_date().
Dafür werden hier 2 Funktionen vorgestellt:
PHP-Code:
function createDateEastern($year=null, $timezone = null) {
if($year === null) $year = date_create(null,$timezone)->format('Y');
if(is_scalar($year)){
$year = (int)$year;
if($year < 1600 or $year >= 2100) return false;
}
else return false;
$easterDays = easter_days($year, CAL_EASTER_ALWAYS_GREGORIAN);
return date_create($year.'-3-21',$timezone)->modify($easterDays.' Days');
}
PHP-Code:
function createDateOrthodoxEastern($year=null, $timezone = null) {
if($year === null) $year = date_create(null,$timezone)->format('Y');
if(is_scalar($year)){
$year = (int)$year;
if($year < 1600 or $year >= 2100) return false;
}
else return false;
$easterDays = easter_days($year, CAL_EASTER_ALWAYS_JULIAN);
$dt = date_create($year.'-4-3',$timezone)->modify($easterDays.' Days');
return $dt->modify('-'.$dt->format('w').' Days');
}
Weitere bewegliche Feiertage lassen sich relativ leicht aus den Datum des Osterfestes ableiten.
Beispiel:
PHP-Code:
//Pfingstsonntage im aktuellen Jahr
$pentecost = createDateEastern()->modify('+49 Days');
$orthodoxPentecost = createDateOrthodoxEastern()->modify('+49 Days');
Kommentar