Created
November 13, 2013 12:46
-
-
Save lerua83/7448507 to your computer and use it in GitHub Desktop.
Der folgende Codeschnipsel enthält keinerlei Überprüfungen der übergebenen Parameter, diese sollten für den produktiven Einsatz noch nachgepflegt werden. Wie man sieht, ist die Berechnung von Wochendenden und Feiertagen recht einfach. Diese Berechnung kann man sicherlich auch schnell in anderen Programmiersprachen abbilden.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function freierTag($tag, $monat, $jahr) | |
{ | |
// Parameter in richtiges Format bringen | |
if(strlen($tag) == 1) { | |
$tag = "0$tag"; | |
} | |
if(strlen($monat) == 1) { | |
$monat = "0$monat"; | |
} | |
// Wochentag berechnen | |
$datum = getdate(mktime(0, 0, 0, $monat, $tag, $jahr)); | |
$wochentag = $datum['wday']; | |
// Prüfen, ob Wochenende | |
if($wochentag == 0 || $wochentag == 6) { | |
return true; | |
} | |
// Feste Feiertage werden nach dem Schema ddmm eingetragen | |
$feiertage[] = "0101"; // Neujahrstag | |
$feiertage[] = "0105"; // Tag der Arbeit | |
$feiertage[] = "0310"; // Tag der Deutschen Einheit | |
$feiertage[] = "2512"; // Erster Weihnachtstag | |
$feiertage[] = "2612"; // Zweiter Weihnachtstag | |
// Bewegliche Feiertage berechnen | |
$tage = 60 * 60 * 24; | |
$ostersonntag = easter_date($jahr); | |
$feiertage[] = date("dm", $ostersonntag - 2 * $tage); // Karfreitag | |
$feiertage[] = date("dm", $ostersonntag + 1 * $tage); // Ostermontag | |
$feiertage[] = date("dm", $ostersonntag + 39 * $tage); // Himmelfahrt | |
$feiertage[] = date("dm", $ostersonntag + 50 * $tage); // Pfingstmontag | |
// Prüfen, ob Feiertag | |
$code = $tag.$monat; | |
if(in_array($code, $feiertage)) { | |
return true; | |
} else { | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment