Feiertagsscript hm

mrbong

Mitglied
Guten Tag !

Ich würde gerne so ein Feiertagsscript
für Österreich auf einer Seite einbauen,
das zb nur schreibt :

Bevorstehende Ereignisse:
24.12.2006 - Weihnachten
31.12.2006 - Silvester



habe einen Code bereits im Net gefunden,
den ich auf sowas umbauen wollte,
jedoch weiß nun nicht mehr weiter,
es gibt nur teilweise die Daten aus,
(zb fehlt Weihnachten)
würde mich über Hilfe freuen :

PHP:
<?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('Valentinstag' => 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

$c=800;
$tag = date("j"); 
$monat = date("m"); 
$jahr = date("Y"); 
$timestamp = mktime(0,0,0,$monat,$tag,$jahr); 
print "Ausgegeben werden die nächsten  $c Tage : <br>TIMESTAMP TODAY MIDNIGHT: $timestamp<br>";

for($count = 1; $count < $c; $count++)
   {
$timestamp=$timestamp+86400; 
$ft = feiertag($timestamp, ö,"");
$zeit=date ("d.m.Y", $timestamp);
print "$timestamp : $zeit : $ft<br>";
}
?>

Vielen Dank im Voraus !

Gruß bong
 
Zuletzt bearbeitet:
Hi

sieht doch schonmal nicht schlecht aus. Du solltest einfach mal noch die Feiertage mit einfügen die mit ein sollen ... an sich ist das dort ja richtigweil der 24.12 ist kein Feiertag ;-)

Wo genau ist da jetzt eigentlich das Problem, beschreib mal bisl genauer.
 
Vielen Dank für dein Reply,
also meinte damit das es funktioniert soweit,
jedoch gibt er zb. Silvester, oder Weihnachten nicht aus.

Ausgabe :
Code:
Bevorstehende Ereignisse :
Ausgegeben werden die nächsten 800 Tage : 
TIMESTAMP TODAY MIDNIGHT: 1157752800
1157839200 : 10.09.2006 : 
1157925600 : 11.09.2006 : 
1158012000 : 12.09.2006 : 
1158098400 : 13.09.2006 : 
1158184800 : 14.09.2006 : 
1158271200 : 15.09.2006 : 
1158357600 : 16.09.2006 : 
1158444000 : 17.09.2006 : 
1158530400 : 18.09.2006 : 
1158616800 : 19.09.2006 : 
1158703200 : 20.09.2006 : 
1158789600 : 21.09.2006 : 
1158876000 : 22.09.2006 : 
1158962400 : 23.09.2006 : 
1159048800 : 24.09.2006 : 
1159135200 : 25.09.2006 : 
1159221600 : 26.09.2006 : 
1159308000 : 27.09.2006 : 
1159394400 : 28.09.2006 : 
1159480800 : 29.09.2006 : 
1159567200 : 30.09.2006 : 
1159653600 : 01.10.2006 : 
1159740000 : 02.10.2006 : 
1159826400 : 03.10.2006 : Herbstanfang
1159912800 : 04.10.2006 : 
1159999200 : 05.10.2006 : 
1160085600 : 06.10.2006 : 
1160172000 : 07.10.2006 : 
1160258400 : 08.10.2006 : 
1160344800 : 09.10.2006 : 
1160431200 : 10.10.2006 : 
1160517600 : 11.10.2006 : 
1160604000 : 12.10.2006 : 
1160690400 : 13.10.2006 : 
1160776800 : 14.10.2006 : 
1160863200 : 15.10.2006 : 
1160949600 : 16.10.2006 : 
1161036000 : 17.10.2006 : 
1161122400 : 18.10.2006 : 
1161208800 : 19.10.2006 : 
1161295200 : 20.10.2006 : 
1161381600 : 21.10.2006 : 
1161468000 : 22.10.2006 : 
1161554400 : 23.10.2006 : 
1161640800 : 24.10.2006 : 
1161727200 : 25.10.2006 : 
1161813600 : 26.10.2006 : Nationalfeiertag
1161900000 : 27.10.2006 : 
1161986400 : 28.10.2006 : 
1162072800 : 29.10.2006 : Winterzeitumstellung
1162159200 : 29.10.2006 : 
1162245600 : 30.10.2006 : 
1162332000 : 31.10.2006 : 
1162418400 : 01.11.2006 : 
1162504800 : 02.11.2006 : 
1162591200 : 03.11.2006 : 
1162677600 : 04.11.2006 : 
1162764000 : 05.11.2006 : 
1162850400 : 06.11.2006 : 
1162936800 : 07.11.2006 : 
1163023200 : 08.11.2006 : 
1163109600 : 09.11.2006 : 
1163196000 : 10.11.2006 : 
1163282400 : 11.11.2006 : 
1163368800 : 12.11.2006 : 
1163455200 : 13.11.2006 : 
1163541600 : 14.11.2006 : 
1163628000 : 15.11.2006 : 
1163714400 : 16.11.2006 : 
1163800800 : 17.11.2006 : 
1163887200 : 18.11.2006 : 
1163973600 : 19.11.2006 : 
1164060000 : 20.11.2006 : 
1164146400 : 21.11.2006 : 
1164232800 : 22.11.2006 : 
1164319200 : 23.11.2006 : 
1164405600 : 24.11.2006 : 
1164492000 : 25.11.2006 : 
1164578400 : 26.11.2006 : 
1164664800 : 27.11.2006 : 
1164751200 : 28.11.2006 : 
1164837600 : 29.11.2006 : 
1164924000 : 30.11.2006 : 
1165010400 : 01.12.2006 : 
1165096800 : 02.12.2006 : 
1165183200 : 03.12.2006 : 
1165269600 : 04.12.2006 : 
1165356000 : 05.12.2006 : 
1165442400 : 06.12.2006 : 
1165528800 : 07.12.2006 : 
1165615200 : 08.12.2006 : 
1165701600 : 09.12.2006 : 
1165788000 : 10.12.2006 : 
1165874400 : 11.12.2006 : 
1165960800 : 12.12.2006 : 
1166047200 : 13.12.2006 : 
1166133600 : 14.12.2006 : 
1166220000 : 15.12.2006 : 
1166306400 : 16.12.2006 : 
1166392800 : 17.12.2006 : 
1166479200 : 18.12.2006 : 
1166565600 : 19.12.2006 : 
1166652000 : 20.12.2006 : 
1166738400 : 21.12.2006 : 
1166824800 : 22.12.2006 : 
1166911200 : 23.12.2006 : 
1166997600 : 24.12.2006 : 
1167084000 : 25.12.2006 : 
1167170400 : 26.12.2006 : 
1167256800 : 27.12.2006 : 
1167343200 : 28.12.2006 : 
1167429600 : 29.12.2006 : 
1167516000 : 30.12.2006 : 
1167602400 : 31.12.2006 : 
...
...
...

mfg bong :)
 
Zurück