kills Geschrieben 9. März 2004 Teilen Geschrieben 9. März 2004 hallo zusammen, ich habe einen UnixTimeStamp vorliegen, und möchten prüfen, ob dieser aktuelle Tag ein Feiertag ist! Wie mach ich sowas am schlausten? Gruß, kills Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 9. März 2004 Teilen Geschrieben 9. März 2004 Was für Feiertage hast du denn da im Sinn? Es gibt im Prinzip zwei Arten: 1. Die mit festem Datum; du müsstest du dir sowas wie eine Liste erstellen und prüfen, ob dein Datum da drin ist. 2. Feiertage die nach einem festen Algorithmus berechnet werden (typisch hierfür: Ostern, Pfingsten (soundsoviel nach Ostern) und Christi Himmelfahrt (soundsoviel nach Pfingsten). Für die Bestimmung von Ostern beitet php die Funktion easter_date(int year). Dafür müssen aber die Kalender-Funktionen verfügbar sein. Ausserdem arbeitet die Funktion mit einem Timestamp, unterliegt also den typischen Beschränkungen/ Problemen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 9. März 2004 Autor Teilen Geschrieben 9. März 2004 Hi Enrico, danke für die Antwort! Ich habe mir folgende Methode geschrieben: function isHoliday() { $day = date( "d", $this->iTimeStamp); $month = date( "m", $this->iTimeStamp); $year = date( "Y", $this->iTimeStamp); $aFixedHolidays = array( "Neujahr" => array( "day" => 1, "month" => 1, "year" => null), "Maifeiertag" => array( "day" => 1, "month" => 5, "year" => null), "Tag der Deutschen Einheit" => array( "day" => 1, "month" => 5, "year" => "<=1990"), "Tag der Deutschen Einheit" => array( "day" => 3, "month" => 10, "year" => ">1990"), "Allerheiligen" => array( "day" => 1, "month" => 11, "year" => null), // "Heilig Abend" => array( "day" => 24, "month" => 12, "year" => null), "1. Weihnachtsfeiertag" => array( "day" => 25, "month" => 12, "year" => null), "2. Weihnachtsfeiertag" => array( "day" => 26, "month" => 12, "year" => null), // "Silvester" => array( "day" => 31, "month" => 12, "year" => null), "Neujahr" => array( "day" => 1, "month" => 1, "year" => null), "Maria Himmelfahrt" => array( "day" => 15, "month" => 8, "year" => null), "Hl. 3 Könige" => array( "day" => 6, "month" => 1, "year" => null), ); foreach ( $aFixedHolidays as $aHoliday) { if ( $day == $aHoliday["day"] && $month == $aHoliday["month"]) { if ( is_null ( $aHoliday["year"])) { return true; } else { // echo "EVAL: if ( \$year". $aHoliday["year"] .") return true; <br>"; eval ( "if ( \$year". $aHoliday["year"] .") return true;"); } } } /* -Buß-und Bettag ist eine Ausnahme UND Z.ZT kein Feiertag mehr!!! man nimmt den 26.11. und sucht den letzten Sonntag davor, falls der 26.11. ein Sonntag ist nimmt man diesen Tag als Sonntag, der Mittwoch vor diesen Sonntag den man errechnet hat ist der Buß- und Bettag */ // zeigt wieviel tage nach dem 21.3 Ostern ist $iHolidayValue = easter_days( $year); $iEastern = $iHolidayValue + 21; // variable Feiertage $aVariableHolidays = array( "Osternsonntag" => mktime(0, 0, 0, 3 , $iEastern, $year), "Karfreitag" => mktime(0, 0, 0, 3 , $iEastern - 2, $year), "Ostermontag" => mktime(0, 0, 0, 3 , $iEastern + 1, $year), "Pfingstsonntag" => mktime(0, 0, 0, 3 , $iEastern + 49, $year), "Pfingstmontag" => mktime(0, 0, 0, 3 , $iEastern + 50, $year), "ChrHimmelfahrt" => mktime(0, 0, 0, 3 , $iEastern + 39, $year), "Fronleichnam" => mktime(0, 0, 0, 3 , $iEastern + 60, $year) ); foreach ( $aVariableHolidays as $iHoliday) { if ( $iHoliday == $this->iTimeStamp) return true; } return false; } [/PHP] PS: Die auskommentierten Feiertage sind nur "deaktiviert", weil in unserer Firma an diesen gearbeitet wird! Habe ich einen Feiertag vergessen? :marine Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Christl Geschrieben 9. März 2004 Teilen Geschrieben 9. März 2004 Hm, vielleicht ein bischen kürzer: $iYear = date("Y"); $arHolidays["01.01.".$iYear] = "Neujahr"; $arHolidays["06.01.".$iYear] = "Dreikönigstag"; $arHolidays["01.05.".$iYear] = "Tag der Arbeit"; $arHolidays["15.08.".$iYear] = "Mariä Himmelfahrt"; #in manchen Bundeslaendern kein Feiertag $arHolidays["03.10.".$iYear] = "Tag der deutschen Einheit"; $arHolidays["01.11.".$iYear] = "Allerheiligen"; $arHolidays["24.12.".$iYear] = "Heiligabend"; # eigentlich kein Feiertag $arHolidays["25.12.".$iYear] = "1. Weihnachtstag"; $arHolidays["26.12.".$iYear] = "2. Weihnachtstag"; $arHolidays["31.12.".$iYear] = "Silvester"; # eigentlich kein Feiertag /* DERFINE MOVING DAYS HERE AND ADD THEM TO THE ARRAY */ /* EASTER SUNDAY */ $ostersonntag = strftime("%d.%m.%Y",easter_date($iYear)); /* KARFREITAG: OSTERSONNTAG - 2 */ $karfreitag = strftime("%d.%m.%Y",(easter_date($iYear) - 2*86400)); /* OSTERMONTAG: OSTERSONNTAG + 1 */ $ostermontag = strftime("%d.%m.%Y",(easter_date($iYear) + 86400)); /* CHRISTI HIMMELFAHRT: OSTERSONNTAG + 39 */ $christi = strftime("%d.%m.%Y",(easter_date($iYear) + 39*86400)); /* PFINGSTSONNTAG: OSTERSONNTAG + 49 */ $pfingstsonntag = strftime("%d.%m.%Y",(easter_date($iYear) + 49*86400)); /* PFINGSTMONTAG: OSTERSONNTAG + 50 */ $pfingstmontag = strftime("%d.%m.%Y",(easter_date($iYear) + 50*86400)); /* FRONLEICHNAM: OSTERSONNTAG + 60 */ $fronleichnam = strftime("%d.%m.%Y",(easter_date($iYear) + 60*86400));[/PHP] [size=1]Gefunden im PHP-Forum [/size] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 9. März 2004 Autor Teilen Geschrieben 9. März 2004 ajo so gehts auch, aber wenn du die 2 foreachschleifen zum auswerten noch mit rannhängst, ist auch nicht kürzer aber trotzdem danke. Gruß kills Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.