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