Der neue, mit PHP selbstprogrammierte Jahreskalender ist fertig! Alles sieht schön aus! Aber Ostern und die restliche Bande der beweglichen Feiertage sind leider um einen Tag verschoben…
English Summary: What an Easter egg! When you have finished your self-programmed calender with PHP, you may observe that Easter and all others of the movable holidays have shifted one day.
Ein Programmierfehler? Wahrscheinlich, aber nicht deiner!
Die meisten beweglichen Feiertage werden mit easter_date() berechnet. Hier liegt das Problem , das HIER im Abschnitt „Notes“ beschrieben wird.
Eine Lösung wird ebenfalls vorgeschlagen.
Wenn ihr das Osterdatum aber als Timestamp wie bei easter_date() benötigt, sollte die Lösung etwa so aussehen:
function get_easter_datetime($year) { $base = new DateTime("$year-03-21"); $days = easter_days($year); $base->add(new DateInterval("P{$days}D")); return $base->getTimestamp(); }
oder (Simplify, simplify!)
function get_easter_datetime($year) { $days = easter_days($year); return mktime(0, 0, 0, 3, 21+$days,$year); }