Diese Feiertage fallen im gesamten Bundesland jedes Jahr auf das selbe Datum:
Alle beweglichen Feiertage, mit Ausnahme vom Buß- und Bettag, können auf Grundlage des Ostersonntags berechnet werden.
Für Ostersonntag gilt:
gesetzlicher Feiertag | Zeitpunkt | Bundesländer |
---|---|---|
Karfreitag | Ostersonntag - 2 Tage | alle |
Ostersonntag | Ostersonntag | nur Brandenburg |
Ostermontag | Ostersonntag + 1 Tag | alle |
Christi Himmelfahrt | Ostersonntag + 39 Tage | alle |
Pfingstsonntag | Ostersonntag + 49 Tage | alle |
Pfingstmontag | Ostersonntag + 50 Tage | alle |
Fronleichnam | Ostersonntag + 60 Tage | nur SL, RP, NW, BY, BW und TH |
Buß- und Bettag | 11 Tage vor dem 1. Advent | nur Sachsen |
Die PHP-Funktion easter_date( $year ) gibt den Unix-Timestamp (Anzahl der Sekunden seit dem 01.01.1970) vom Ostersonntag um 0:00 Uhr vom als Parameter übergebendem Jahr zurück. Einschränkung: Es können nur Jahreszahlen von 1970 bis 2037 übergeben werden.
Wichtiger technischer Hinweis: Die Funktion „easter_date“ ist eine Funktion aus der Erweiterung „calendar“. Wenn PHP auf einem Windows Betriebssystem ausgeführt wird sind die Kalenderfunktionen bereits automatisch enthalten. Auf Linux-Systemen hingegen muss PHP mit der Erweiterung '–enable-calendar' kompiliert werden. Andernfalls wird ein Fatal Error ('Call to undefined function') geworfen.
In diesem Codebeispiel werden ausschließlich bundesweite Feiertage berücksichtigt. Bei Bedarf können, je nach Bundesland, die entsprechenden Feiertage ergänzt werden.
class calendar { protected $holidays = array(); protected $year = 0; /** * calendar constructor. * @param int|string $year */ public function __construct( $year = 0 ) { $this->year = ( $year == 0 ) ? date( 'Y' ) : $year; // feste Feiertage definieren $this->holidays[] = '01.01.'; // Neujahr $this->holidays[] = '01.05.'; // Tag der Arbeit $this->holidays[] = '03.10.'; // Tag der Deutschen Einheit $this->holidays[] = '25.12.'; // 1. Weihnachtsfeiertag $this->holidays[] = '26.12.'; // 2. Weihnachtsfeiertag // alle beweglichen Feiertage von Karfreitag bis Pfinstmontag $easterSunday = date( 'd.M.Y', easter_date( $this->year ) ); foreach( array( -2, 1, 39, 49, 50 ) as $day ) { $time = array( $easterSunday, $day, 'day'); $ts = strtotime( implode( ' ', $time ) ); $this->holidays[] = date( 'd.m.', $ts ); } } /** * @param int $timestamp * @return bool */ public function isHoliday( $timestamp ) { $date = date( 'd.m.', $timestamp ); return in_array( $date, $this->holidays ); } }
$cal = new calendar( 2016 ); $days = ( date( 'L' ) ) ? 366 : 365; // Schaltjahr: 366 Tage, sonst 365 Tage for( $day = 0; $day < $days; $day++ ) // jeden Tag des Jahres anzeigen { $time = array( '01.01.' . date( 'Y' ), $day, 'day' ); $timestamp = strtotime( implode( ' ', $time ) ); if( $cal->isHoliday( $timestamp ) ) // wenn der Tag ein Feiertag ist { echo "Der " . date( 'd.m.Y.', $timestamp ) . " ein Feiertag!<br/>"; } else // wenn der Tag KEIN Feiertag ist { echo "Der " . date( 'd.m.Y.', $timestamp ) . " ist kein Feiertag<br/>"; } }