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