Antworten auf deine Fragen:
Neues Thema erstellen

Buß- und Bettag + Advent berechen

SWFP

SWFP Mitglied

Hi,

ich habe mein folgendes PHP-Script zur Berechnung von Feiertagen schon so weit:

PHP:
<?php

$heute = date("d.m");

$year = date("Y");
$easterDate  = easter_date($year);
$easterDay   = date('j', $easterDate);
$easterDay2   = date('j'+1, $easterDate);
$easterMonth = date('m', $easterDate);
$easterYear   = date('Y', $easterDate);
$Ostersonntag = $easterDay.".".$easterMonth.".";
$Ostermontag =  $easterDay2.".".$easterMonth.".";
//$Ostersonntag_morgen = mktime(0, 0, 0, easterDate("d")+1, easterDate("m")  , easterDate("Y"));

$Feiertage = array("01.01."=>"Neujahr",
"02.01."=>"",
"03.01."=>"",
"04.01."=>"",
"05.01."=>"",
"06.01."=>"Heilige Dreik&ouml;nige/Dreik&ouml;nigstag",
"07.01."=>"",
"08.01."=>"",
"09.01."=>"",
"10.01."=>"",
"11.01."=>"",
"12.01."=>"",
"13.01."=>"",
"14.01."=>"",
"15.01."=>"",
"16.01."=>"",
"17.01."=>"",
"18.01."=>"",
"19.01."=>"",
"20.01."=>"",
"21.01."=>"",
"22.01."=>"",
"23.01."=>"",
"24.01."=>"",
"25.01."=>"",
"26.01."=>"",
"27.01."=>"",
"28.01."=>"",
"29.01."=>"",
"30.01."=>"",
"31.01."=>"",
"01.02."=>"",
"02.02."=>"",
"03.02."=>"",
"04.02."=>"",
"05.02."=>"",
"06.02."=>"",
"07.02."=>"",
"08.02."=>"",
"09.02."=>"",
"10.02."=>"",
"11.02."=>"",
"12.02."=>"",
"13.02."=>"",
"14.02."=>"",
"15.02."=>"",
"16.02."=>"",
"17.02."=>"",
"18.02."=>"",
"19.02."=>"",
"20.02."=>"",
"21.02."=>"",
"22.02."=>"",
"23.02."=>"",
"24.02."=>"",
"25.02."=>"",
"26.02."=>"",
"27.02."=>"",
"28.02."=>"",
"29.02."=>"",
"01.03."=>"",
"02.03."=>"",
"03.03."=>"",
"04.03."=>"",
"05.03."=>"",
"06.03."=>"",
"07.03."=>"",
"08.03."=>"",
"09.03."=>"",
"10.03."=>"",
"11.03."=>"",
"12.03."=>"",
"13.03."=>"",
"14.03."=>"",
"15.03."=>"",
"16.03."=>"",
"17.03."=>"",
"18.03."=>"",
"19.03."=>"",
"20.03."=>"",
"21.03."=>"",
"22.03."=>"",
"23.03."=>"",
"24.03."=>"",
"25.03."=>"",
"26.03."=>"",
"27.03."=>"",
"28.03."=>"",
"29.03."=>"",
"30.03."=>"",
"31.03."=>"",
"01.04."=>"",
"02.04."=>"",
"03.04."=>"",
"04.04."=>"",
"05.04."=>"",
"06.04."=>"nichts",
"07.04."=>"",
"08.04."=>"",
"09.04."=>"",
"10.04."=>"",
"11.04."=>"",
"12.04."=>"",
"13.04."=>"",
"14.04."=>"",
"15.04."=>"",
"16.04."=>"",
"17.04."=>"",
"18.04."=>"",
"19.04."=>"",
"20.04."=>"",
"21.04."=>"",
"22.04."=>"",
"23.04."=>"",
"24.04."=>"",
"25.04."=>"",
"26.04."=>"",
"27.04."=>"",
"28.04."=>"",
"29.04."=>"",
"30.04."=>"",
"01.05."=>"Tag der Arbeit",
"02.05."=>"",
"03.05."=>"",
"04.05."=>"",
"05.05."=>"",
"06.05."=>"",
"07.05."=>"",
"08.05."=>"",
"09.05."=>"",
"10.05."=>"",
"11.05."=>"",
"12.05."=>"",
"13.05."=>"",
"14.05."=>"",
"15.05."=>"",
"16.05."=>"",
"17.05."=>"",
"18.05."=>"",
"19.05."=>"",
"20.05."=>"",
"21.05."=>"",
"22.05."=>"",
"23.05."=>"",
"24.05."=>"",
"25.05."=>"",
"26.05."=>"",
"27.05."=>"",
"28.05."=>"",
"29.05."=>"",
"30.05."=>"",
"31.05."=>"",
"01.06."=>"",
"02.06."=>"",
"03.06."=>"",
"04.06."=>"",
"05.06."=>"",
"06.06."=>"",
"07.06."=>"",
"08.06."=>"",
"09.06."=>"",
"10.06."=>"",
"11.06."=>"",
"12.06."=>"",
"13.06."=>"",
"14.06."=>"",
"15.06."=>"",
"16.06."=>"",
"17.06."=>"",
"18.06."=>"",
"19.06."=>"",
"20.06."=>"",
"21.06."=>"",
"22.06."=>"",
"23.06."=>"",
"24.06."=>"",
"25.06."=>"",
"26.06."=>"",
"27.06."=>"",
"28.06."=>"",
"29.06."=>"",
"30.06."=>"",
"01.07."=>"",
"02.07."=>"",
"03.07."=>"",
"04.07."=>"",
"05.07."=>"",
"06.07."=>"",
"07.07."=>"",
"08.07."=>"",
"09.07."=>"",
"10.07."=>"",
"11.07."=>"",
"12.07."=>"",
"13.07."=>"",
"14.07."=>"",
"15.07."=>"",
"16.07."=>"",
"17.07."=>"",
"18.07."=>"",
"19.07."=>"",
"20.07."=>"",
"21.07."=>"",
"22.07."=>"",
"23.07."=>"",
"24.07."=>"",
"25.07."=>"",
"26.07."=>"",
"27.07."=>"",
"28.07."=>"",
"29.07."=>"",
"30.07."=>"",
"31.07."=>"",
"01.08."=>"",
"02.08."=>"",
"03.08."=>"",
"04.08."=>"",
"05.08."=>"",
"06.08."=>"",
"07.08."=>"",
"08.08."=>"",
"09.08."=>"",
"10.08."=>"",
"11.08."=>"",
"12.08."=>"",
"13.08."=>"",
"14.08."=>"",
"15.08."=>"",
"16.08."=>"",
"17.08."=>"",
"18.08."=>"",
"19.08."=>"",
"20.08."=>"",
"21.08."=>"",
"22.08."=>"",
"23.08."=>"",
"24.08."=>"",
"25.08."=>"",
"26.08."=>"",
"27.08."=>"",
"28.08."=>"",
"29.08."=>"",
"30.08."=>"",
"31.08."=>"",
"01.09."=>"",
"02.09."=>"",
"03.09."=>"",
"04.09."=>"",
"05.09."=>"",
"06.09."=>"",
"07.09."=>"",
"08.09."=>"",
"09.09."=>"",
"10.09."=>"",
"11.09."=>"",
"12.09."=>"",
"13.09."=>"",
"14.09."=>"",
"15.09."=>"",
"16.09."=>"",
"17.09."=>"",
"18.09."=>"",
"19.09."=>"",
"20.09."=>"",
"21.09."=>"",
"22.09."=>"",
"23.09."=>"",
"24.09."=>"",
"25.09."=>"",
"26.09."=>"",
"27.09."=>"",
"28.09."=>"",
"29.09."=>"",
"30.09."=>"",
"01.10."=>"",
"02.10."=>"",
"03.10."=>"Tag der Deutschen Einheit",
"04.10."=>"",
"05.10."=>"",
"06.10."=>"",
"07.10."=>"",
"08.10."=>"",
"09.10."=>"",
"10.10."=>"",
"11.10."=>"",
"12.10."=>"",
"13.10."=>"",
"14.10."=>"",
"15.10."=>"",
"16.10."=>"",
"17.10."=>"",
"18.10."=>"",
"19.10."=>"",
"20.10."=>"",
"21.10."=>"",
"22.10."=>"",
"23.10."=>"",
"24.10."=>"",
"25.10."=>"",
"26.10."=>"",
"27.10."=>"",
"28.10."=>"",
"29.10."=>"",
"30.10."=>"",
"31.10."=>"Reformationstag",
"01.11."=>"",
"02.11."=>"",
"03.11."=>"",
"04.11."=>"",
"05.11."=>"",
"06.11."=>"",
"07.11."=>"",
"08.11."=>"",
"09.11."=>"",
"10.11."=>"",
"11.11."=>"Martinstag",
"12.11."=>"",
"13.11."=>"",
"14.11."=>"",
"15.11."=>"",
"16.11."=>"",
"17.11."=>"",
"18.11."=>"",
"19.11."=>"",
"20.11."=>"",
"21.11."=>"",
"22.11."=>"",
"23.11."=>"",
"24.11."=>"",
"25.11."=>"",
"26.11."=>"",
"27.11."=>"",
"28.11."=>"",
"29.11."=>"",
"30.11."=>"",
"01.12."=>"",
"02.12."=>"",
"03.12."=>"",
"04.12."=>"",
"05.12."=>"",
"06.12."=>"Nikolaustag",
"07.12."=>"",
"08.12."=>"",
"09.12."=>"",
"10.12."=>"",
"11.12."=>"",
"12.12."=>"",
"13.12."=>"",
"14.12."=>"",
"15.12."=>"",
"16.12."=>"",
"17.12."=>"",
"18.12."=>"",
"19.12."=>"",
"20.12."=>"",
"21.12."=>"",
"22.12."=>"",
"23.12."=>"",
"24.12."=>"Heiligabend",
"25.12."=>"1. Weihnachtstag",
"26.12."=>"2. Weihnachtstag",
"27.12."=>"",
"28.12."=>"",
"29.12."=>"",
"30.12."=>"",
"31.12."=>"Silvester"
);

//Array-key ist der String in form: "DD.MM." am osterdatum des jahres $year
$Feiertage[date("d.m.", easter_date($year))]="Ostersonntag";
$Feiertage[date("d.m.", easter_date(intval($year)))]="Ostersonntag";

//Array-key ist der String in form: "DD.MM." am Osterdatum + 1Tag (60sec*60min*24h) des Jahres $year
$Feiertage[date("d.m.", easter_date($year)+(60*60*24))]="Ostermontag";

//Array-key ist der String in form: "DD.MM." am Osterdatum - 1Tag (60sec*60min*24h) des Jahres $year
$Feiertage[date("d.m.", easter_date($year)-(60*60*24))]="Karsamstag";

//Array-key ist der String in form: "DD.MM." am Osterdatum - 2Tage (60sec*60min*48h) des Jahres $year
$Feiertage[date("d.m.", easter_date($year)-(60*60*48))]="Karfreitag";

//Array-key ist der String in form: "DD.MM." am Osterdatum - 3Tage (60sec*60min*72h) des Jahres $year
$Feiertage[date("d.m.", easter_date($year)-(60*60*72))]="Gr&uuml;ndonnerstag";

//Array-key ist der String in form: "DD.MM." am Osterdatum - 7Tage (60sec*60min*168h) des Jahres $year
$Feiertage[date("d.m.", easter_date($year)-(60*60*168))]="Palmsonntag";

//Array-key ist der String in form: "DD.MM." am Osterdatum + 39Tage (60sec*60min*936h) des Jahres $year
$Feiertage[date("d.m.", easter_date($year)+(60*60*936))]="Christi Himmelfahrt";

//Array-key ist der String in form: "DD.MM." am Osterdatum + 49Tage (60sec*60min*1176h) des Jahres $year
$Feiertage[date("d.m.", easter_date($year)+(60*60*1176))]="Pfingstsonntag";

//Array-key ist der String in form: "DD.MM." am Osterdatum + 50Tage (60sec*60min*1200h) des Jahres $year
$Feiertage[date("d.m.", easter_date($year)+(60*60*1200))]="Pfingstmontag";

//Array-key ist der String in form: "DD.MM." am Osterdatum + 60Tage (60sec*60min*1440h) des Jahres $year
$Feiertage[date("d.m.", easter_date($year)+(60*60*1440))]="Fronleichnam";

$Feiertage["4. Advent"] = strtotime("last Sunday",mktime(0,0,0,12,25,$YY));

//Berechnung Buß- und Bettag am Kirchenjahr: Ende des Kirchenjahres (=der Sonntag vor dem ersten Advent) -11Tage
$Feiertage["Buß und Bettag"]=strtotime("-11 days", strtotime("1 sunday", mktime(0,0,0,11,26,$year)));

//Test
echo $Feiertage["01.01."];
echo "<br />";
echo $Feiertage["06.01."];
echo "<br />";
echo $Feiertage["24.03."];
echo "<br />";
echo $Feiertage["28.03."];
echo "<br />";
echo $Feiertage["29.03."];
echo "<br />";
echo $Feiertage["30.03."];
echo "<br />";
echo $Feiertage["31.03."];
echo "<br />";
echo $Feiertage["01.04."];
echo "<br />";
echo $Feiertage["06.04."];
echo "<br />";
echo $Feiertage["01.05."];
echo "<br />";
echo $Feiertage["09.05."];
echo "<br />";
echo $Feiertage["19.05."];
echo "<br />";
echo $Feiertage["20.05."];
echo "<br />";
echo $Feiertage["30.05."];
echo "<br />";
echo $Feiertage["03.10."];
echo "<br />";
echo $Feiertage["11.11."];
echo "<br />";
echo $Feiertage["20.11."];
echo "<br />";
echo $Feiertage["06.12."];
echo "<br />";
echo $Feiertage["22.12."];
echo "<br />";
echo $Feiertage["24.12."];
echo "<br />";
echo $Feiertage["25.12."];
echo "<br />";
echo $Feiertage["26.12."];
echo "<br />";
echo $Feiertage["31.12."];
?>

Doch die Tipps, welche ich bisher im Internet fand, brachten mir noch nicht das gewünschte Ergebnis. Vielleicht, habe ich auch nur eine kleine Sache falsch in meine Array-Struktur übernommen.

Die Berechnung jedenfalls weiß ich jetzt schon mal. Man rechnet minus elf Tage vom Ende des Kirchenjahres, also eine Woche vor dem ersten Advent. Dies muss man aber auch erstmal formulieren.

MfG
SWFP
 

Duddle

Posting-Frequenz: 14µHz

AW: Buß- und Bettag + Advent berechen

Erstens verstehe ich überhaupt nicht, warum du diese riesige Liste mit leeren Einträgen hast. Sowas muss dir doch sofort auffallen.

Zweitens verlinkt der Wikipedia-Artikel zum Buß- und Bettag auf einen sehr einfachen Algorithmus zur Berechnung des Datums. Der ist zwar in VB geschrieben, kann aber problemlos in PHP umgesetzt werden.


Duddle
 

SWFP

SWFP Mitglied

AW: Buß- und Bettag + Advent berechen

@Duddle: Leer heißt erstmal nur, dass da vielleicht etwas rein kommt, bzw. damit kein Fehler ausgegeben wird. Wie du siehst handelt es sich bei der Liste ja um ein Array.

@Schnemat: Hallo schnemat. Nein leider bin ich damit etwas überfordert. Denn so etwas in der Art habe ich ja bereits versucht. Vielleicht habe ich da ja nur einen Fehler:
PHP:
$Feiertage["4. Advent"] = strtotime("last Sunday",mktime(0,0,0,12,25,$YY)); 

//Berechnung Buß- und Bettag am Kirchenjahr: Ende des Kirchenjahres (=der Sonntag vor dem ersten Advent) -11Tage 
$Feiertage["Buß und Bettag"]=strtotime("-11 days", strtotime("1 sunday", mktime(0,0,0,11,26,$year)));

LG SWFP
 

Duddle

Posting-Frequenz: 14µHz

AW: Buß- und Bettag + Advent berechen

Es tritt nur ein Fehler auf, wenn du auf ein nicht-existentes Element zugreifst. Also prüfst du erst an der Stelle, ob das Element definiert ist.

Was würdest du machen, wenn wir statt 12 Monaten 1000 hätten? Würdest du dann 30000 leere Einträge festlegen?


Duddle
 

SWFP

SWFP Mitglied

AW: Buß- und Bettag + Advent berechen

:mad:Haben wir aber nicht.

Warum das? Das muss ich doch sonst auch nicht machen?

Erspare mir doch bitte unnötigen Code:motz:

SWFP
 

netbandit

Aktives Mitglied

AW: Buß- und Bettag + Advent berechen

Hallo,

mach doch mal ein Dump von dem Array, dann wird Dir sicherlich auffallen, dass die Schlüssel zum größtem Teil im "d.m." Format sind... aber eben nur zum größten Teil. ;)

Mal davon ab, selbst das von Dir gewählte Format halte ich für zu unflexibel. Einfach den Timestamp als Key verwenden, dann könnte man z.B. auch nur Feiertage von der aktuellen Woche, Monat etc. leichter anzeigen lassen...

... alles andere wurde ja schon gesagt:

Erspare mir doch bitte unnötigen Code
Wurde versucht, nimmst Dir ja nichts davon an ;)

Grüße :)
 
Zuletzt bearbeitet:

SWFP

SWFP Mitglied

AW: Buß- und Bettag + Advent berechen

Hallo,

Ja, aber wie schreibe ich das um? Ich habe mich zwar schon etwas mit den date-Funktionen beschäftigt, aber damit leider noch nicht.

Was willst du mir damit sagen? Welches Format fändest du denn besser?

Das kann man so oder so sehen :) Aber in gewisser Weise könntest du recht haben...

Ich habe mir nun folgende Dinge angeschaut, die aber alle noch unschöne Nebeninfos liefern:
  • var_dump();
  • var_export();
  • print_r();
Was würdest du mir denn empfehlen zu wählen, wenn ich die Dinge einfach nur einzeln ausgegeben haben möchte bzw. die Gegebenheiten ändern, zum Beispiel den Array-Pfeil in der Ausgabe zu einem Doppelpunkt machen.

Grüße :)
 
Zuletzt bearbeitet:

netbandit

Aktives Mitglied

AW: Buß- und Bettag + Advent berechen

Lass Dir den Quelltext anzeigen, dann sieht es etwas schöner aus... ich nehme am Liebsten var_dump

Grüße :)
 

ovbb

es gibt für alles eine weg

AW: Buß- und Bettag + Advent berechen

ich persönlich würde ein array mit den feiertagen (key) und datum (value) erstellen.

Das hat einen einfachen grund: die feiertage sind ja fix definiert (zumindest in Österreich :) )

Sicher gibt es dann noch regionale Unterschiede (z.B. Schulstart die aber keine Feiertage sind :) ) die man aber auch abbilden kann.

PHP:
 <?php

$heute = date("d.m");

$year = date("Y");
$easterDate  = easter_date($year);
$easterDay   = date('j', $easterDate);
$easterDay2   = date('j'+1, $easterDate);
$easterMonth = date('m', $easterDate);
$easterYear   = date('Y', $easterDate);
$Ostersonntag = $easterDay.".".$easterMonth.".";
$Ostermontag =  $easterDay2.".".$easterMonth.".";
//$Ostersonntag_morgen = mktime(0, 0, 0, easterDate("d")+1, easterDate("m")  , easterDate("Y"));


$Feiertage = array(
"Neujahr"=>date("l der m. F Y ", mktime(0, 0, 0, 1, 1, $year))  // Sollte sowas wie "Dienstag der 3. September 2013" ausgeben 
"Dreikoenig"=>date("l der m. F Y ", mktime(0, 0, 0, 1, 1, $year)),
// TODO
);

// Für die zu berechnenden Feiertage vielleicht sowas:
function Ostersontag($Feiertage, $year) {
    $Feiertage['Ostersonntag']= date("l der m. F Y ", easter_date($year))
} 

// TODO
?>
 

SWFP

SWFP Mitglied

AW: Buß- und Bettag + Advent berechen

Vielen Dank erstmal.

Doch ein paar Fragen habe ich noch:

Zum einen: Warum muss ich denn die festen Feiertage überhaupt berechnen?

Dann bekomme ich bei
PHP:
echo $Feiertage['Neujahr'];
statt z.B.
Dienstag der 1. Januar 2013
Tuesday 01Europe/BerlinTue, 01 Jan 2013 00:00:00 +0100 01. January 2013
ausgegeben, was ja nicht sehr hilfreich ist.

Und dann bekomme ich bei
PHP:
echo $Feiertage['Ostersonntag'];
gar nichts ausgegeben.
 
Zuletzt bearbeitet:

netbandit

Aktives Mitglied

AW: Buß- und Bettag + Advent berechen

ich persönlich würde ein array mit den feiertagen (key) und datum (value) erstellen.

Das hat einen einfachen grund: die feiertage sind ja fix definiert (zumindest in Österreich :) )

Sicher gibt es dann noch regionale Unterschiede (z.B. Schulstart die aber keine Feiertage sind :) ) die man aber auch abbilden kann.

Hmmm, drüber nachgedacht - hast Du recht aber eher aus dem Grund, wenn zwei oder mehr "sogenannte" Feiertage auf ein Datum fallen, z.B. Helloween, Reformatiostag, Valentinstag auf ein Rosenmontag fällt usw.

Ob man solche Tage jetzt auch unbedingt aufführen muss...?

Zum einen: Warum muss ich denn die festen Feiertage überhaupt berechnen?

Feste Feiertage brauchst Du nicht berechnen, soll bestimmt nur ein Beispiel sein.
 

SWFP

SWFP Mitglied

AW: Buß- und Bettag + Advent berechen

Nein, ich meine auch das Format.
Ich würde sagen, es schadet ja keinen, wenn man sie mit aufzählt.

Achso, okay.
 

netbandit

Aktives Mitglied

AW: Buß- und Bettag + Advent berechen

Sodele, habe mal ein wenig geschustert (alles ohne Gewähr) :D
Alles vorzukauen ist nicht immer unbedingt richtig, aber Du scheinst ja echt auf der Leitung zu stehen ;). Evtl. hilft es ja auch noch anderen weiter...

Funktion:

PHP:
function feiertage($jahr)
    {
    $ostern=easter_date($jahr);
    $tag_ostern=date('d', $ostern);
    $monat_ostern=date('m', $ostern);
    
    $advent=mktime(0,0,0,11,26+(7-strftime('%w',mktime(0,0,0,11,26,$jahr))),$jahr);
    $tag_advent=date('d', $advent);
    $monat_advent=date('m', $advent);
    
    $feiertag=array();
    
    $feiertag['Neujahr']=mktime(0,0,0,1,1,$jahr);
    $feiertag['Heilige 3 Könige']=mktime(0,0,0,1,6,$jahr);
    $feiertag['Valentinstag']=mktime(0,0,0,2,14,$jahr);
    $feiertag['Frauentag']=mktime(0,0,0,3,8,$jahr);
    $feiertag['Walpurgisnacht']=mktime(0,0,0,4,30,$jahr);
    $feiertag['Muttertag']=mktime(0,0,0,5,1+(7-strftime('%w',mktime(0,0,0,5,1,$jahr)))+7,$jahr);
    $feiertag['Kindertag']=mktime(0,0,0,6,1,$jahr);
    $feiertag['Erntedankfest']=mktime(0,0,0,10,1+(7-strftime('%w',mktime(0,0,0,10,1,$jahr))),$jahr);    
    $feiertag['Rosenmontag']=mktime(0,0,0,$monat_ostern,$tag_ostern-48,$jahr);
    $feiertag['Faschingsdienstag/Fastnacht']=mktime(0,0,0,$monat_ostern,$tag_ostern-47,$jahr);
    $feiertag['Aschermittwoch']=mktime(0,0,0,$monat_ostern,$tag_ostern-46,$jahr);
    $feiertag['Palmsonntag']=mktime(0,0,0,$monat_ostern,$tag_ostern-7,$jahr);
    $feiertag['Gründonnerstag']=mktime(0,0,0,$monat_ostern,$tag_ostern-3,$jahr);
    $feiertag['Karfreitag']=mktime(0,0,0,$monat_ostern,$tag_ostern-2,$jahr);
    $feiertag['Karsamstag']=mktime(0,0,0,$monat_ostern,$tag_ostern-1,$jahr);
    $feiertag['Ostersonntag']=$ostern;
    $feiertag['Ostermontag']=mktime(0,0,0,$monat_ostern,$tag_ostern+1,$jahr);
    $feiertag['Maifeiertag/Tag der Arbeit']=mktime(0,0,0,5,1,$jahr);
    $feiertag['Christi Himmelfahrt']=mktime(0,0,0,$monat_ostern,$tag_ostern+39,$jahr);
    $feiertag['Pfingstsonntag']=mktime(0,0,0,$monat_ostern,$tag_ostern+49,$jahr);
    $feiertag['Pfingstmontag']=mktime(0,0,0,$monat_ostern,$tag_ostern+50,$jahr);
    $feiertag['Fronleichnam']=mktime(0,0,0,$monat_ostern,$tag_ostern+60,$jahr);
    $feiertag['Mariä Himmelfahrt']=mktime(0,0,0,8,15,$jahr);
    $feiertag['Tag der Deutschen Einheit']=mktime(0,0,0,10,3,$jahr);
    $feiertag['Reformationstag']=mktime(0,0,0,10,31,$jahr);
    $feiertag['Helloween']=mktime(0,0,0,10,31,$jahr);
    $feiertag['Allerheiligen']=mktime(0,0,0,11,1,$jahr);
    $feiertag['Allerseelen']=mktime(0,0,0,11,2,$jahr);
    $feiertag['Martinstag']=mktime(0,0,0,11,11,$jahr);
    $feiertag['Volkstrauertag']=mktime(0,0,0,$monat_advent,$tag_advent-14,$jahr);
    $feiertag['Buß- und Bettag']=mktime(0,0,0,$monat_advent,$tag_advent-11,$jahr);
    $feiertag['Totensonntag']=mktime(0,0,0,$monat_advent,$tag_advent-7,$jahr);
    $feiertag['1.Advent']=$advent;
    $feiertag['2.Advent']=mktime(0,0,0,$monat_advent,$tag_advent+7,$jahr);
    $feiertag['3.Advent']=mktime(0,0,0,$monat_advent,$tag_advent+14,$jahr);
    $feiertag['4.Advent']=mktime(0,0,0,$monat_advent,$tag_advent+21,$jahr);    
    $feiertag['Nikolaustag']=mktime(0,0,0,12,6,$jahr);
    $feiertag['Heiligabend']=mktime(0,0,0,12,24,$jahr);
    $feiertag['1.Weihnachtstag']=mktime(0,0,0,12,25,$jahr);
    $feiertag['2.Weihnachtstag']=mktime(0,0,0,12,26,$jahr);
    $feiertag['Silvester']=mktime(0,0,0,12,31,$jahr);
    
    asort($feiertag);
    
    return $feiertag;
}
Beispielaufruf:

PHP:
$jahr=2013;
$feiertage=feiertage($jahr);
foreach($feiertage as $k => $v)
    {
    echo strftime('%d.%m.%Y', $v) . ': ' . $k . '<br>';
}
oder
PHP:
$jahr=2013;
$feiertage=feiertage($jahr);
$start=0;
$end=mktime(0,0,0,12,31,$jahr);

for($i=1;$start<$end;$i++)
    {
    $start=mktime(0,0,0,1,$i,$jahr);
    
    echo strftime('%d.%m.%Y', $start);
    if(in_array($start, $feiertage)) echo ' (' . implode(', ', array_keys($feiertage, $start)) . ')';
    echo '<br>';    
}
Einfach nicht benötigte Feiertage löschen, auskommentieren oder fehlende hinzufügen. Kann man sicherlich noch kürzen aber ich lasse das mal der Übersicht wegen so :rolleyes:

Am letzten Beispiel siehst Du, dass Deine vielen leeren Array-Einträge gar nicht benötigt werden (siehe auch Dein Geburtstagsdingen). Im Übrigen kannst Du die Funktion auch dafür verwenden...

Grüße :)
 

ovbb

es gibt für alles eine weg

AW: Buß- und Bettag + Advent berechen

Hi

Der Code war auch nur als anregung gedacht und verwendet folgende funktionen:

http://php.net/manual/de/function.mktime.php
und
http://www.php.net/manual/de/function.date.php

date() verwendet wie du in der Doku sehen kannst einen String zum formatieren als ersten Parameter. Als zweiten benötigt es einen timestamp. Durch mktime bekommst du diesen. Außerdem kann man ggf mit Zeitzonen arbeiten.

"l der m. F Y" (1. Parameter von date() sollte eigentlich den timestamp formatieren.)
Alles ohne Gewähr da ich die Doku nur überflogen habe. Aber du findest alles gut erklärt in der Doku von php die ich verlinkt habe.

lg
 

SWFP

SWFP Mitglied

AW: Buß- und Bettag + Advent berechen

Vielen Dank ihr beiden. Ich denke, nun sollte es gelöst sein.
Grüße

Edit: Kurz noch eine Sache: Ich hatte doch das Problem, dass er die Variable nicht akzeptiert hat. Wie kann ich das lösen?
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben