Mit folgender PHP Funktion, kann überprüft werden ob an einem Datum (Timestamp) ein Feiertag ist und wenn ja in welchem Bundesland.
class Helper { /** * @param $tDay Timestamp des Tages, der auf einen Feiertag überprüft werden soll * @return array( * 'text' => '' Text * 'feast' => boolean True wenn Feiertag * 'arState' => '' Leerer Array oder Array mit Bundesländern für die der Feiertag gilt * ) * * BW = Baden-Württemberg * BY = Bayern * BE = Berlin * BB = Brandenburg * HB = Bremen * HH = Hamburg * HE = Hessen * MV = Mecklenburg-Vorpommern * NI = Niedersachsen * NW = Nordrhein-Westfalen * RP = Rheinland-Pfalz * SL = Saarland * SN = Sachsen * ST = Sachsen-Anhalt * SH = Schleswig-Holstein * TH = Thüringen */ public static function getFeastInfo($tDay) { $md = date('md', $tDay); $tEaster = easter_date(date('Y', $tDay)); $text = ''; $feast = ''; $arState = []; if ($md == '0101') { $feast = _('Neujahr'); } else if ($md == '0501') { $feast = _('Erster Mai'); } else if ($md == '0106') { $feast = _('Heiligen Drei Könige'); $arState = ['BW', 'BY', 'ST']; } else if ($md == date('md', strtotime('-2 day', $tEaster))) { $feast = _('Karfreitag'); } else if ($md == date('md', $tEaster)) { $feast = _('Ostersonntag'); } else if ($md == date('md', strtotime('+1 day', $tEaster))) { $feast = _('Ostermontag'); $arState = ['SN']; } else if ($md == date('md', strtotime('+39 day', $tEaster))) { $feast = _('Christi Himmelfahrt'); } else if ($md == date('md', strtotime('+49 day', $tEaster))) { $feast = _('Pfingstsonntag'); } else if ($md == date('md', strtotime('+50 day', $tEaster))) { $feast = _('Pfingstmontag'); } else if ($md == date('md', strtotime('+60 day', $tEaster))) { $feast = _('Fronleichnam'); $arState = ['BW', 'BY', 'HE', 'NW', 'RP', 'SL', 'SN', 'TH']; } else if ($md == '0815') { $feast = _('Maria Himmelfahrt'); $arState = ['SL', 'BY']; } else if ($md == '1003') { $feast = _('Tag der deutschen Einheit'); } else if ($md == '1031') { $feast = _('Reformationstag'); $arState = ['BB', 'MV', 'SN', 'ST', 'TH']; } else if ($md == '1101') { $feast = _('Allerheiligen'); $arState = ['BW', 'BY', 'NW', 'RP', 'SL']; } else if ($md == date('md', strtotime("last wednesday", mktime(0, 0, 0, 11, 23,date('Y', $tDay))))) { $feast = _('Buß- und Bettag'); $arState = ['SN']; } else if ($md == '1224') { $feast = _('Heiliger Abend'); } else if ($md == '1225') { $feast = _('1. Weihnachtsfeiertag'); } else if ($md == '1226') { $feast = _('2. Weihnachtsfeiertag'); } else if ($md == '1231') { $feast = _('Silvester (Bankfeiertag)'); } else if ($md == '1231') { $feast = _('Silvester (Bankfeiertag)'); } else if ($md == '0803') { $feast = _('Internationaler Frauentag'); $arState = ['BE']; } if (date('N', $tDay) === '6') $text = 'Samstag'; else if (date('N', $tDay) === '7') $text = 'Sonntag'; else $text = ''; if (sizeof($arState) > 0) { $arStateMapping = [ 'BW' => 'Baden-Württemberg', 'BY' => 'Bayern', 'BE' => 'Berlin', 'HB' => 'Bremen', 'HH' => 'Hamburg', 'HE' => 'Hessen' ,'MV' => 'Mecklenburg-Vorpommern', 'NI' => 'Niedersachsen', 'NW' => 'Nordrhein-Westfalen', 'RP' => 'Rheinland-Pfalz', 'SL' => 'Saarland', 'SN' => 'Sachsen', 'ST' => 'Sachsen-Anhalt', 'SH' => 'Schleswig-Holstein', 'TH' => 'Thüringen' ]; foreach ($arState as $k => $v) { $arState[$k] = $arStateMapping[$v]; } } if ($feast === '' && $text === '') $text = 'Arbeitstag'; else if ($feast !== '' && $text !== '') $text = $text.' ('.$feast.rtrim(', '.implode(', ', $arState), ' ,').')'; else if ($feast !== '') $text = $feast.rtrim(', '.implode(', ', $arState), ' ,'); return [ 'text' => $text, 'feast' => ($feast !== ''), 'arState' => $arState ]; } }
Siehe auch: https://de.wikipedia.org/wiki/Gesetzliche_Feiertage_in_Deutschland