Skip to content

Instantly share code, notes, and snippets.

@lerua83
Created November 13, 2013 12:46
Show Gist options
  • Save lerua83/7448507 to your computer and use it in GitHub Desktop.
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.
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