Feiertage über PHP ermitteln
Aus ITwiki
Version vom 1. Juni 2011, 09:23 Uhr von Franky (Diskussion | Beiträge)
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;
}
}