Mailinglisten-Archive |
# land kann sein: # ö - Österreich # d - Deutschland # region kann sein: # <leer> keine der unten Spezifizierten # bawü - Baden-Würthenberg # bay - Bayern # bran - Brandenburg # mepo - Mecklenburg-Vorpommern # nrw - Nordrhein-Westfahlen # rhpf - Rheinland-Pfalz # saan - Sachsen-Anhalt # saar - Saarland # sax - Sachsen # thr - Thüringen function feiertag($sqldatum_oder_timestamp, $land='d', $region='') { if (!function_exists('easter_date')) return false; if (empty($sqldatum_oder_timestamp)) $werktag = time(); else if (is_numeric($sqldatum_oder_timestamp)) $werktag = $sqldatum_oder_timestamp; else $werktag = sqlzeit2timestamp($sqldatum_oder_timestamp); $os = easter_date(date('Y', $werktag)); $tag = date('d',$os); $monat = date('m',$os); $jahr = date('Y',$os); $arr = array( #Statische Feiertage mktime(0,0,0, 1, 1, $jahr) => array('Neujahr' => array('ö', 'd')), mktime(0,0,0, 1, 6, $jahr) => array('Heilige 3 Könige' => array('ö'), 'Erscheinungsfest' => array('d-bawü', 'd-saan', 'd-bay')), mktime(0,0,0, 5, 1, $jahr) => array('Staatsfeiertag' => array('ö'), 'Tag der Arbeit' => array('d')), mktime(0,0,0, 8,15, $jahr) => array('Maria Himmelfahrt' => array('ö', 'd-saar', 'd-bay')), mktime(0,0,0,10, 3, $jahr) => array('Tag der dt. Einheit' => array('d')), mktime(0,0,0,10,26, $jahr) => array('Nationalfeiertag' => array('ö')), mktime(0,0,0,10,31, $jahr) => array('Reformationstag' => array('d-bran', 'd-mepo', 'd-sax', 'd-saan', 'd-thür')), mktime(0,0,0,11, 1, $jahr) => array('Allerheiligen' => array('ö', 'd-bawü', 'd-nrw', 'd-rhpf', 'd-saar', 'd-bay')), mktime(0,0,0,21, 1, $jahr) => array('Buß und Bettag' => array('d-sax')), mktime(0,0,0,12, 8, $jahr) => array('Maria Empfängnis' => array('ö')), mktime(0,0,0,12,25, $jahr) => array('Christtag' => array('ö'), '1. Weihnachtstag' => array('d')), mktime(0,0,0,12,26, $jahr) => array('Stephanitag' => array('ö'), '2. Weihnachtstag' => array('d')), #Feiertage basierend auf Ostersonntag mktime(0,0,0,$monat,$tag-46,$jahr) => array('Aschermittwoch' => array('ö')), mktime(0,0,0,$monat,$tag- 3,$jahr) => array('Karfreitag' => array('ö')), mktime(0,0,0,$monat,$tag, $jahr) => array('Ostersonntag' => array('ö', 'd')), mktime(0,0,0,$monat,$tag+ 1,$jahr) => array('Ostermontag' => array('ö', 'd')), mktime(0,0,0,$monat,$tag+39,$jahr) => array('Christi Himmelfahrt' => array('ö', 'd')), mktime(0,0,0,$monat,$tag+49,$jahr) => array('Pfingstsonntag' => array('ö', 'd')), mktime(0,0,0,$monat,$tag+50,$jahr) => array('Pfingstmontag' => array('ö', 'd')), mktime(0,0,0,$monat,$tag+60,$jahr) => array('Fronleichnam' => array('ö, d-bawü, d-bay, d-nrw, d-rhpf, d-saar, d-sax, d-thür')) ); if ($feiertag = _(at)_$arr[$werktag]) foreach ($feiertag as $fname=>$wo) if (in_array($land, $wo) || in_array($land.'-'.$region, $wo)) return $fname; return ''; } function sqlzeit2timestamp($sqldatetime) { if (is_numeric($sqldatetime)) return $sqldatetime; $sqlzeit = explode(' ', $sqldatetime); if (!empty($sqlzeit[1])) { $uhrzeit = explode(':', $sqlzeit[1]); } else if (strstr($sqlzeit[0], ':')) # eine Uhrzeit { $uhrzeit = explode(':', $sqlzeit[0]); $datum = explode('-', date('Y-m-d')); } else if (strstr($sqlzeit[0], '-')) # ein amerikanisches Datum { $uhrzeit = explode(':', date('H:i:s')); $datum = explode('-', $sqlzeit[0]); } else # ein deutsches Datum { $uhrzeit = explode(':', date('H:i:s')); $datum = explode('.', $sqlzeit[0]); $tmp = $datum[0]; $datum[0] = $datum[2]; $datum[2] = $datum[1]; $datum[1] = tmp; } return mktime($uhrzeit[0], $uhrzeit[1], 0, $datum[1], $datum[2], $datum[0]); } --- Thomas Beckmann, Kiel, Germany beckmann_(at)_gis.de
php::bar PHP Wiki - Listenarchive