| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

18-09-2002, 18:06
|
|
TimoGoebel
Junior Member
|
|
Registriert seit: Jul 2002
Beiträge: 51
|
|
Feiertage
Hey,
wie mache ich es, dass ich das Aktuelle Datum (Kann ich selbst  ) und daneben der Feitertag (fals vorhanden) von D,A,CH Angezeigt bekomme? Habe schon im Forum gesucht, aber nichts PAssendes Gefunden.
MfG
Goebel
|

18-09-2002, 21:18
|
|
MoRtAlAn
PHP Master
|
|
Registriert seit: Jan 2002
Ort: Mühlheim am Main
Beiträge: 5.934
|
|
du legst dir ein Array/ eine Textdatei/ eine Tabelle an, wo alle Feiertage gelistet sind, passt das Datum, gibst du den entsprechenden Feiertag aus!
gruss
|

19-09-2002, 00:35
|
|
CHnuschti
Member
|
|
Registriert seit: Feb 2002
Beiträge: 287
|
|
|

19-09-2002, 08:16
|
|
eSHa
Member
|
|
Registriert seit: Mar 2002
Ort: Plüderhausen
Beiträge: 159
|
|
Hallo Timo,
für D und A hätt ich da was:
PHP-Code:
function feiertag($sqldatum_oder_timestamp, $land, $region) {
/*
# 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
*/
if (!function_exists('easter_date')) {
return false;
}//end if
if (empty($sqldatum_oder_timestamp)) {
$werktag = time();
} elseif (is_numeric($sqldatum_oder_timestamp)) {
$werktag = $sqldatum_oder_timestamp;
} else {
$werktag = sqlzeit2timestamp($sqldatum_oder_timestamp);
}//end if
$os = easter_date(date('Y', $werktag));
$tag = date('d',$os);
$monat = date('m',$os);
$jahr = date('Y',$os);
#Statische Feiertage
$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,11,20, $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- 2,$jahr) => array('Karfreitag' => array('ö', 'd')),
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 = @$arr[$werktag]) {
foreach ($feiertag as $fname=>$wo) {
if (in_array($land, $wo) || in_array($land.'-'.$region, $wo)) {
return $fname;
}
}
return '';
}
}//end function
das einzige was für D noch fehlt ist der Buß- und Bettag.
__________________
Grüße an alle und weiterhin frohes Arbeiten
|

19-09-2002, 08:23
|
|
eSHa
Member
|
|
Registriert seit: Mar 2002
Ort: Plüderhausen
Beiträge: 159
|
|
sorry Timo,
da fehlt dann natürlich noch die function die aus dem SQL-Datum nen Timestamp macht.
PHP-Code:
function sqlzeit2timestamp($sqldatetime) {
/*wandelt MySQL Zeit in Timestamp um*/
if (is_numeric($sqldatetime)) {
return $sqldatetime;
}
$sqlzeit = explode(' ', $sqldatetime);
if (!empty($sqlzeit[1])) {
$uhrzeit = explode(':', $sqlzeit[1]);
# eine Uhrzeit
} elseif (strstr($sqlzeit[0], ':')) {
$uhrzeit = explode(':', $sqlzeit[0]);
$datum = explode('-', date('Y-m-d'));
# ein amerikanisches Datum
} elseif (strstr($sqlzeit[0], '-')) {
$uhrzeit = explode(':', date('H:i:s'));
$datum = explode('-', $sqlzeit[0]);
# ein deutsches Datum
} else {
$uhrzeit = explode(':', date('H:i:s'));
$datum = explode('.', $sqlzeit[0]);
$tmp = $datum[0];
$datum[0] = $datum[2];
$datum[2] = $datum[1];
$datum[1] = tmp;
}//end if
return mktime($uhrzeit[0], $uhrzeit[1], 0, $datum[1], $datum[2],$datum[0]);
}//end function
__________________
Grüße an alle und weiterhin frohes Arbeiten
|

19-09-2002, 13:00
|
|
TimoGoebel
Junior Member
|
|
Registriert seit: Jul 2002
Beiträge: 51
|
|
Danke! Hat mir sehr geholfen!
Gibt es sowas auch für die Schweiz??
MfG
Goebel
|

19-09-2002, 15:44
|
|
TimoGoebel
Junior Member
|
|
Registriert seit: Jul 2002
Beiträge: 51
|
|
Hey,
möchte den Buss und Bettag berechnen!
Zitat:
|
Der 1. Advent ist der Sonntag nach dem 26. November; der Buß- und Bettag liegt 11 Tage vor dem 1. Advent.
|
Soweit so gut, aber wie berechne ich jetzt den 1. Sonntag nach dem 26. Nov??
Goebel
|

19-09-2002, 21:58
|
|
eSHa
Member
|
|
Registriert seit: Mar 2002
Ort: Plüderhausen
Beiträge: 159
|
|
Hallo Timo,
freut mich, dass ich Dir helfen konnte.
Wie sind denn die Feiertage für die Schweiz?
Buß- und Bettag kommt demnächst.
__________________
Grüße an alle und weiterhin frohes Arbeiten
|

22-09-2002, 10:01
|
|
TimoGoebel
Junior Member
|
|
Registriert seit: Jul 2002
Beiträge: 51
|
|
Habe des Script mit allen möglichen Tagen erweiter! (Sommerzeitumstellung,...) Hier der Code
PHP-Code:
<?php
function sqlzeit2timestamp($sqldatetime) {
/*wandelt MySQL Zeit in Timestamp um*/
if (is_numeric($sqldatetime)) {
return $sqldatetime;
}
$sqlzeit = explode(' ', $sqldatetime);
if (!empty($sqlzeit[1])) {
$uhrzeit = explode(':', $sqlzeit[1]);
# eine Uhrzeit
} elseif (strstr($sqlzeit[0], ':')) {
$uhrzeit = explode(':', $sqlzeit[0]);
$datum = explode('-', date('Y-m-d'));
# ein amerikanisches Datum
} elseif (strstr($sqlzeit[0], '-')) {
$uhrzeit = explode(':', date('H:i:s'));
$datum = explode('-', $sqlzeit[0]);
# ein deutsches Datum
} else {
$uhrzeit = explode(':', date('H:i:s'));
$datum = explode('.', $sqlzeit[0]);
$tmp = $datum[0];
$datum[0] = $datum[2];
$datum[2] = $datum[1];
$datum[1] = tmp;
}//end if
return mktime($uhrzeit[0], $uhrzeit[1], 0, $datum[1], $datum[2],$datum[0]);
}//end function
function feiertag($sqldatum_oder_timestamp, $land, $region) {
/*
# 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
*/
if (!function_exists('easter_date')) {
return false;
}//end if
if (empty($sqldatum_oder_timestamp)) {
$werktag = time();
} elseif (is_numeric($sqldatum_oder_timestamp)) {
$werktag = $sqldatum_oder_timestamp;
} else {
$werktag = sqlzeit2timestamp($sqldatum_oder_timestamp);
}//end if
$os = easter_date(date("Y", $werktag));
$tag = date('d',$os);
$monat = date('m',$os);
$jahr = date('Y',$os);
# Berechnen des 1. Advent, der 1. Advent ist der 1. Sonntag nach dem 26. November
for($i=26;$i<=50;$i++) {
if($i==30) {
$i=1;
$month=12;
} elseif($month != 12) $month=11;
if(date ("w", mktime(0,0,0,$month,$i,$jahr)) == "0") {
$firstadvent = mktime(0,0,0,$month,$i,$jahr);
break;
}
}
# Sommerzeitumstellung
for($i=31;$i<=40;$i--) {
if(date ("w", mktime(0,0,0,3,$i,$jahr)) == "0") {
$summertime = mktime(0,0,0,3,$i,$jahr);
break;
}
}
# Winterzeitumstellung
for($i=30;$i<=40;$i--) {
if(date ("w", mktime(0,0,0,10,$i,date("Y"))) == "0") {
$wintertime = mktime(0,0,0,10,$i,date("Y"));
break;
}
}
#Muttertag
$l=0;
for($i=0;$i<=31;$i++) {
if(date ("w", mktime(0,0,0,5,$i,date("Y"))) == "0") $l++;
if($l==2) {
$mothersday = mktime(0,0,0,5,$i,date("Y"));
break;
}
}
$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,11,20, $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')),
mktime(0,0,0,12,31, $jahr) => array('Sylvester' => array('d','ö')),
#Feiertage basierend auf Ostersonntag
mktime(0,0,0,$monat,$tag-46,$jahr) => array('Aschermittwoch'=> array('ö')),
mktime(0,0,0,$monat,$tag- 2,$jahr) => array('Karfreitag' => array('ö', 'd')),
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')),
#Feiertage basierend auf 1. Advent
$firstadvent-11*3600*24 => array('Buß - und Bettag' => array('d')),
$firstadvent => array('1. Advent' => array('d','ö')),
$firstadvent+7*3600*24 => array('2. Advent' => array('d','ö')),
$firstadvent+14*3600*24 => array('3. Advent' => array('d','ö')),
$firstadvent+21*3600*24 => array('4. Advent' => array('d','ö')),
#Wichtige Tage
mktime(0,0,0,1,1+44,$jahr) => array('Valentienstag' => array('d')),
mktime(0,0,0,1,1+79+date("L"),$jahr) => array('Frühlingsanfang' => array('d')),
mktime(0,0,0,1,1+171+date("L"),$jahr) => array('Sommeranfang' => array('d')),
mktime(0,0,0,1,1+275+date("L"),$jahr) => array('Herbstanfang' => array('d')),
mktime(0,0,0,1,1+355+date("L"),$jahr) => array('Winteranfang' => array('d')),
$summertime => array('Sommerzeitumstellung' => array('d','ö')),
$wintertime => array('Winterzeitumstellung' => array('d','ö'))
);
if ($feiertag = @$arr[$werktag]) {
foreach ($feiertag as $fname=>$wo) {
if (in_array($land, $wo) || in_array($land.'-'.$region, $wo)) {
return $fname;
}
}
return '';
}
}//end function
?>
|

23-09-2002, 10:32
|
|
eSHa
Member
|
|
Registriert seit: Mar 2002
Ort: Plüderhausen
Beiträge: 159
|
|
Habe jetzt ne function die den Buß- und Bettag errechnet.
PHP-Code:
function bb_tag($ts) {
/*
* Die Funktion "BB_Tag" berechnet das Datum für den Buß- und Bettag.
* Aufruf: $bb_tag = BB_Tag(Timestamp)
*/
$i=16;
$bbt = mktime(0,0,0,11,$i,date("Y",$ts));
while(date("w",$bbt) != 3){
$i++;
$bbt=mktime(0,0,0,11,$i,date("Y",$ts));
if ($i > 22) {
break;
} //end if
} // end while
return $bbt;
}//end function bb_tag
__________________
Grüße an alle und weiterhin frohes Arbeiten
|

23-09-2002, 14:10
|
|
TimoGoebel
Junior Member
|
|
Registriert seit: Jul 2002
Beiträge: 51
|
|
War doch auch bei meiner Version implementiert!
Goebel
|

23-09-2002, 18:02
|
|
eSHa
Member
|
|
Registriert seit: Mar 2002
Ort: Plüderhausen
Beiträge: 159
|
|
wo denn? (Blindheit)
__________________
Grüße an alle und weiterhin frohes Arbeiten
Geändert von eSHa (23-09-2002 um 18:08 Uhr)
|

26-09-2002, 14:21
|
|
TimoGoebel
Junior Member
|
|
Registriert seit: Jul 2002
Beiträge: 51
|
|
Zitat:
PHP-Code:
$firstadvent-11*3600*24 => array('Buß - und Bettag' => array('d')),
|
|

26-09-2002, 18:06
|
|
eSHa
Member
|
|
Registriert seit: Mar 2002
Ort: Plüderhausen
Beiträge: 159
|
|
OK. Hab ich übersehen.
Dann ist die Zeile
PHP-Code:
mktime(0,0,0,11,20, $jahr) => array('Buß und Bettag' => array('d-sax')),
aber überflüssig.
__________________
Grüße an alle und weiterhin frohes Arbeiten
|

02-10-2004, 20:45
|
|
cb master
Junior Member
|
|
Registriert seit: Jul 2002
Beiträge: 77
|
|
schaut super aus - nur ich bin eben wohl am schlafen ...
um die funktino auszulesen schreib ich doch:
PHP-Code:
echo feiertag($sqldatum_oder_timestamp, $land, $region);
oder ????
doch da kommt nichts - was mich darauf brachte das in der funktion wohl was fehlt ??? am ende hab ich einfach nur nicht den durchblick - würde mich nicht wunder ...  wer kann mir helfen ???
PHP-Code:
if ($feiertag = @$arr[$werktag]) {
foreach ($feiertag as $fname=>$wo) {
if (in_array($land, $wo) || in_array($land.'-'.$region, $wo)) {
return $fname;
}
}
return '';
}
}//end function
?>
__________________
besucht mich mal ...
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|