Dies ist eine alte Version des Dokuments!
Diese Feiertage fallen im gesamten Bundesland jedes Jahr auf das selbe Datum:
Alle beweglichen Feiertage können auf Grundlage des Ostersonntags berechnet werden.
Für Ostersonntag gilt:
gesetzlicher Feiertag | Zeitpunkt |
---|---|
Karfreitag | Ostersonntag - 2 Tage |
Ostersonntag | Ostersonntag |
Ostermontag | Ostersonntag + 1 Tag |
Christi Himmelfahrt | Ostersonntag + 39 Tage |
Pfingstsonntag | Ostersonntag + 49 Tage |
Pfingstmontag | Ostersonntag + 50 Tage |
Die PHP-Funktion easter_date( $year ) gibt den Timestamp vom Ostersonntag (0:00 Uhr) vom übergebenden Jahr zurück. Wichtiger technischer Hinweis: Die Funktion „easter_date“ ist in der Erweiterung „calendar“ enthalten. Wenn PHP auf einem Windows Betriebssystem ausgeführt wird sind die Kalenderfunktionen bereits automatisch enthalten. Auf Linux-Systemen muss PHP mit der Erweiterung '–enable-calendar' kompiliert werden. Andernfalls wird ein Fatal Error ('Call to undefined function') geworfen.
class calendar { private $holidays = array(); /** * calendar constructor. * @param int|string $year */ public function __construct( $year = 0 ) { $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( $year ) ); foreach( array( -2, 0, 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/>"; } }