Feiertage ermitteln
Kalle_B
- php
0 dave0 EKKi0 Klawischnigg
0 Samoht0 Horst0 fastix®
Hallöle,
ich habe in der DB ein Feld in der Form YYYY-MM-DD
Den Wochentag lese ich aus mit ,DATE_FORMAT(ter1.tag,'%w') wotag
aber die Feiertage wie Pfingstmontag, 3.10., Weihnachten usw. muss ich wohl in PHP über eine Tabelle machen, Jedes Jahr eine andere.
Oder gibt es da eine Funktion?
LG Kalle
Hallöle,
ich habe in der DB ein Feld in der Form YYYY-MM-DD
juhuu jemand der langsam zu seinem problem hinführt
Den Wochentag lese ich aus mit ,DATE_FORMAT(ter1.tag,'%w') wotag
er sagt sogar was er schon gemacht hat
aber die Feiertage wie Pfingstmontag, 3.10., Weihnachten usw. muss ich wohl in PHP über eine Tabelle machen, Jedes Jahr eine andere.
und hat ein problem bei dem ich den zusammenhang zu dem vorhergehenden nicht finden kann
Oder gibt es da eine Funktion?
glaub nicht, allerdings ist es kein problem die feiertage zu berechnen
pfingsten z.B.: http://de.wikipedia.org/wiki/Pfingstmontag#Pfingstdatum
Mahlzeit,
Oder gibt es da eine Funktion?
glaub nicht,
Naja, zumindest für Ostern gibt es da Dank der Osterformel in verschiedenen Programmiersprachen etwas - auch für PHP.
Und von Ostern zu Pfingsten ist es nur ein kleiner Schritt - zumindest ein immer konstanter. :-)
allerdings ist es kein problem die feiertage zu berechnen
pfingsten z.B.: http://de.wikipedia.org/wiki/Pfingstmontag#Pfingstdatum
AFAIK hängen ALLE christlichen beweglichen Feiertage an Ostern - und die Daten der fixen Feiertage sind ja eh fix (wie auch die bundesweit gültigen einheitlichen Feiertage). :-)
MfG,
EKKi
Hi there,
glaub nicht, allerdings ist es kein problem die feiertage zu berechnen
Ahnungslos und frech. Super. Hauptsache, Du hast Dich über einen User lustig machen können...
aber die Feiertage wie Pfingstmontag, 3.10., Weihnachten usw. muss ich wohl in PHP über eine Tabelle machen, Jedes Jahr eine andere.
fast alles hängt von Ostern ab, der Rest sollten feste Tage sein und Jahreszahl unabhängig. Siehe http://forum.de.selfhtml.org/archiv/2003/6/t50123/#bottom
Außerdem findest Du über Google durchaus brauchbare Scripte von Leuten, die das schon in eine Funktion umgesetzt haben.
Oder gibt es da eine Funktion?
LG Kalle
Gruß, Samoht
Hi,
Oder gibt es da eine Funktion?
Es gibt Feiertage, die sind vom Osterdatum (OS Ostersonntag) abgeleitet, z.B.:
Fronleichnam = OS + 60
Pfingstmontag = OS + 50
...
und es gibt fixe Feiertage, wie z.B. den 1. Mai. Beide Tage sind immer getrennt voneinander zu behandeln, weil es die Möglichkeit gibt, dass beide auf einen Tag fallen, wie der "Tag der Arbeit" und "Christi Himmelfahrt" am 1.5. dieses Jahr.
Die Formel zum Berechnen des Osterdatums nach Gauss findest Du im Internet oder in einer guten Bibliothek mit richtigen Büchern. Außerdem empfiehlt es sich, grundsätzlich alle Datumsberechnungn über den Julianischen Tag vorzunehmen, das vereinfacht den Rechenaufwand erheblich. Auch hierzu gibt es Formeln in einschlägigen Büchern oder auch im Internet.
Viele Grüße,
Hotte
Moin!
»» aber die Feiertage wie Pfingstmontag, 3.10., Weihnachten usw. muss ich wohl in PHP über eine Tabelle machen, Jedes Jahr eine andere.
»»
»» Oder gibt es da eine Funktion?
Ja. Die macht aber eigene Schreibarbeit... deswegen ausnahmsweise getSkript()
<?php
## Autor: fastix http://www.fastix.de/
function feiertag ($intTag, $intMonat, $intJahr) {
if ($intTag==1 AND $intMonat==1) { return "Neujahr"; }
else if ($intTag==1 AND $intMonat==5) { return "1. Mai"; }
else if ($intTag==6 AND $intMonat==1) { return "Dreikönigstag"; }
else if ($intTag==3 AND $intMonat==10) { return "Tag der deutschen Einheit"; }
else if ($intTag==1 AND $intMonat==11) { return "Allerheiligen"; }
else if ($intTag==25 AND $intMonat==12) { return "1. Weihnachtstag"; }
else if ($intTag==26 AND $intMonat==12) { return "2. Weihnachtstag"; }
# nichtfeste Feiertage
if ($intTag==date("j",easter_date($intJahr)) AND $intMonat==date("n",easter_date($intJahr))) {return "Ostersonntag";}
else if ($intTag==date("j",(easter_date($intJahr)) - 2*86400) AND $intMonat==date("n",(easter_date($intJahr)) - 2*86400)) {return "Karfreitag";}
else if ($intTag==date("j",(easter_date($intJahr)) + 86400) AND $intMonat==date("n",(easter_date($intJahr)) + 86400)) {return "Ostermontag";}
else if ($intTag==date("j",(easter_date($intJahr)) + 39*86400) AND $intMonat==date("n",(easter_date($intJahr)) + 39*86400)) {return "Christi Himmelfahrt";}
else if ($intTag==date("j",(easter_date($intJahr)) + 50*86400) AND $intMonat==date("n",(easter_date($intJahr)) + 50*86400)) {return "Pfingstmontag";}
else if ($intTag==date("j",(easter_date($intJahr)) + 60*86400) AND $intMonat==date("n",(easter_date($intJahr)) + 60*86400)) {return "Fronleichnam - in manchen Bundeslaendern kein Feiertag";}
return false;
}
function halbfeiertag ($intTag, $intMonat, $intJahr) {
if ($intTag==15 AND $intMonat==8) {return "Mariä Himmelfahrt - in manchen Bundeslaendern kein Feiertag";}
else if ($intTag==24 AND $intMonat==12) {return "Heiligabend";}
else if ($intTag==31 AND $intMonat==12) {return "Silvester";}
return false;
}
?>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hi,
else if ($intTag==24 AND $intMonat==12) {return "Heiligabend";}
else if ($intTag==31 AND $intMonat==12) {return "Silvester";}
da fehlt noch Rosenmontag - jedenfalls in meiner Region...
freundliche Grüße
Ingo
da fehlt noch Rosenmontag - jedenfalls in meiner Region...
Das der Rosenmontag _irgendwo_ ein gesetzlicher Feiertag ist, wäre mir neu...
Gruß, Samoht
Moin!
Das der Rosenmontag _irgendwo_ ein gesetzlicher Feiertag ist, wäre mir neu...
Naja... Es gibt formelle Gesetze und informelle Gesetze. (Oder geh mal Rosenmontag in Köln arbeiten...)
Rosenmontag ist wie der Faschingsdienstag von Ostern abhängig, kann also ausgehend vom Ostersonntag berechnet werden.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Moin!
da fehlt noch Rosenmontag - jedenfalls in meiner Region...
Bei "Halbfeiertagen" einbauen:
else if ($intTag==11 AND $intMonat==11) {return "Faschingsbeginn- in manchen Gegenden kein echter Arbeitstag";}
else if ($intTag==date("j",(easter_date($intJahr)) - 47*86400) AND $intMonat==date("n",(easter_date($intJahr)) - 47*86400)) {return "Rosenmontag- in manchen Gegenden kein echter Arbeitstag";}
else if ($intTag==date("j",(easter_date($intJahr)) - 46*86400) AND $intMonat==date("n",(easter_date($intJahr)) - 46*86400)) {return "Faschingsdienstag- in manchen Gegenden kein echter Arbeitstag";}
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
*lol*
wir könnten natürlich auch ne Diskussion anfangen, ob Fasching abgeschafft werden sollte...
SCNR :-)
Gruß, Samoht
Moin!
wir könnten natürlich auch ne Diskussion anfangen, ob Fasching abgeschafft werden sollte...
Nö.
Im Gegenteil: Ich habe mein Kalenderscript auf dem Server IT-Schule.de selbst noch um diese Tage ergänzt. Wäre kompletter Unsinn, da in Köln ein Seminar halten oder besuchen zu wollen...
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hi,
Wäre kompletter Unsinn, da in Köln ein Seminar halten oder besuchen zu wollen...
... oder bei mir in Düsseldorf. Bis auf die armen Verkäufer/innen, die zumindest am Vormittag arbeiten müssen, haben die meisten frei - entweder als geschenkten Feiertag oder (zwangsweisen) Überstundenausgleich.
freundliche Grüße
Ingo