Feiertage über PHP ermitteln

Aus ITwiki
Version vom 1. Juni 2011, 09:22 Uhr von Franky (Diskussion | Beiträge) (Die Seite wurde neu angelegt: Hier ist eine Funktion zum Ermitteln der Feiertage: /** * Ermittle Feiertage, Arbeitstage und Wochenenden von einem Datum * * @param string $datum im Format YYYY...)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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; 
   } 

}