Kalle_B: Feiertage ermitteln

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

  1. 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

    1. 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

      --
      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    2. 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...

  2. 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

    --
    fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
    "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
    (Kristian Wilson, Nintendo, 1989)
  3. 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

    --

     Mai 2008
    KW  Mo Di Mi Do Fr Sa So
    18           01 02 03 04
    19  05 06 07 08 09 10 11
    20  12 13 14 15 16 17 18
    21  19 20 21 22 23 24 25
    22  26 27 28 29 30 31
    22 regulaere Arbeitstage
    5 Feiertage
    01.05.2008 Donnerstag Christi Himmelfahrt
    01.05.2008 Donnerstag Tag der Arbeit
    11.05.2008 Sonntag    Pfingstsonntag
    12.05.2008 Montag     Pfingstmontag
    22.05.2008 Donnerstag Fronleichnam
  4. 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®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
    1. 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

      1. da fehlt noch Rosenmontag - jedenfalls in meiner Region...

        Das der Rosenmontag _irgendwo_ ein gesetzlicher Feiertag ist, wäre mir neu...

        Gruß, Samoht

        --
        fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
        "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
        (Kristian Wilson, Nintendo, 1989)
        1. 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®

          --
          Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
      2. 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®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
        1. *lol*

          wir könnten natürlich auch ne Diskussion anfangen, ob Fasching abgeschafft werden sollte...

          SCNR :-)

          Gruß, Samoht

          --
          fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
          "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
          (Kristian Wilson, Nintendo, 1989)
          1. 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®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
            1. 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