Feiertage über PHP ermitteln

Aus ITwiki
Wechseln zu: Navigation, Suche

Hier ist eine Funktion zum Ermitteln der Feiertage:

/** 
 * Ermittle Feiertage, Arbeitstage und Wochenenden von einem Datum 
 * 
 * @param string $datum im Format YYYY-MM-DD 
 * @param string $bundesland 
 * @return string 
 */ 
function feiertag ($datum,$bundesland='') { 

    $datum = explode("-", $datum); 

    $datum[1] = str_pad($datum[1], 2, "0", STR_PAD_LEFT); 
    $datum[2] = str_pad($datum[2], 2, "0", STR_PAD_LEFT); 

    if (!checkdate($datum[1], $datum[2], $datum[0])) return false; 

    $datum_arr = getdate(mktime(0,0,0,$datum[1],$datum[2],$datum[0])); 

    $easter_d = date("d", easter_date($datum[0])); 
    $easter_m = date("m", easter_date($datum[0])); 

    $status = 'Arbeitstag'; 
    if ($datum_arr['wday'] == 0 || $datum_arr['wday'] == 6) $status = 'Wochenende'; 

    if ($datum[1].$datum[2] == '0101') { 
        return 'Neujahr'; 
    } elseif ($datum[1].$datum[2] == '0106') { 
        return 'Heilige Drei Könige'; 
    } elseif ($datum[1].$datum[2] == '0319' && ($bundesland == 'k' || $bundesland == 'st' || $bundesland == 't' || $bundesland == 'v')) { 
        return 'Josef'; 
    } elseif ($datum[1].$datum[2] == $easter_m.$easter_d) { 
        return 'Ostersonntag'; 
    } elseif ($datum[1].$datum[2] == date("md",mktime(0,0,0,$easter_m,$easter_d+1,$datum[0]))) { 
        return 'Ostermontag'; 
    } elseif ($datum[1].$datum[2] == date("md",mktime(0,0,0,$easter_m,$easter_d+39,$datum[0]))) { 
        return 'Christi Himmelfahrt'; 
    } elseif ($datum[1].$datum[2] == date("md",mktime(0,0,0,$easter_m,$easter_d+49,$datum[0]))) { 
        return 'Pfingstsonntag'; 
    } elseif ($datum[1].$datum[2] == date("md",mktime(0,0,0,$easter_m,$easter_d+50,$datum[0]))) { 
        return 'Pfingstmontag'; 
    } elseif ($datum[1].$datum[2] == date("md",mktime(0,0,0,$easter_m,$easter_d+60,$datum[0]))) { 
        return 'Fronleichnam'; 
    } elseif ($datum[1].$datum[2] == '0501') { 
        return 'Erster Mai'; 
    } elseif ($datum[1].$datum[2] == '0504' && $bundesland == 'ooe') { 
        return 'Florian'; 
    } elseif ($datum[1].$datum[2] == '0815') { 
        return 'Mariä Himmelfahrt'; 
    } elseif ($datum[1].$datum[2] == '0924' && $bundesland == 's') { 
        return 'Rupertitag'; 
    } elseif ($datum[1].$datum[2] == '1010' && $bundesland == 'k') { 
        return 'Tag der Volksabstimmung'; 
    } elseif ($datum[1].$datum[2] == '1026') { 
        return 'Nationalfeiertag'; 
    } elseif ($datum[1].$datum[2] == '1101') { 
        return 'Allerheiligen'; 
    } elseif ($datum[1].$datum[2] == '1111' && $bundesland == 'b') { 
        return 'Martini'; 
    } elseif ($datum[1].$datum[2] == '1115' && ($bundesland == 'noe' || $bundesland == 'w')) { 
        return 'Leopoldi'; 
    } elseif ($datum[1].$datum[2] == '1208') { 
        return 'Mariä Empfängnis'; 
    } elseif ($datum[1].$datum[2] == '1224') { 
        return 'Heiliger Abend'; 
    } elseif ($datum[1].$datum[2] == '1225') { 
        return 'Christtag'; 
    } elseif ($datum[1].$datum[2] == '1226') { 
        return 'Stefanitag'; 
    } else { 
        return $status; 
    } 
}