Wer programmiert kommt früher oder Später an das Thema Feiertage. Feiertage sind oft ein wichtiger Bestandteil vieler Kalender oder Termin prgrammierungen. Es gibt sicherlich auch Bibliothek oder fertige Klassen aber das ganze lässt sich mit PHP auch ganz leicht umsetzen. Selbstverständlich geht es in jeder anderen Programmiersprache ähnlich.
Der einfachste aber schlechteste Weg ist für jeden Feiertag das Datum von Hand zu hinterlegen. Der besser Weg ist alle Feiertage zu berechnen.
Ausgangsbasis ist die Funktion easter_date() Hat man Ostern einmal festgelegt, kann man alle weiteren Feiertage ermitteln.
Hier ein mögliches Beispiel:
// Feiertage
$feiertage = array();
$jahr = date('Y'); // Welches Jahr soll berechnet werden?
$tag = 24*60*60; // 1 Tag in Sekunden
$ostern = easter_date($jahr); // Ostern ermitteln - der erste Sonntag nach dem ersten Vollmond im Frühling
$last_sunday = strtotime("last Sunday",mktime(0,0,0,12,25,$jahr)); // letzter Sonntag im Jahr ermitteln
$advent4 = date("d.m.Y", strtotime("last Sunday", $last_sunday) ); // 4. Advent
//-----------------------------------------------------------------------------
$feiertage[]['neujahr'] = date("d.m.Y", mktime(0,0,0,1,1,$jahr)); // Neujahr
$feiertage[]['heilige_koenige'] = date("d.m.Y", mktime(0,0,0,1,6,$jahr) ); // Heilige 3 Könige
$feiertage[]['gruendonnerstag'] = date("d.m.Y", $ostern - (3*$tag) ); // Gründonnerstag
$feiertage[]['karfreitag'] = date("d.m.Y", $ostern - (2*$tag) ); // Karfreitag
$feiertage[]['ostersonntag'] = date("d.m.Y", $ostern); // Ostersonntag
$feiertage[]['ostermontag'] = date("d.m.Y", $ostern + (1*$tag) ); // Ostermontag
$feiertage[]['tag_der_arbeit'] = date("d.m.Y", mktime(0,0,0,5,1,$jahr) ); // Tag der Arbeit
$feiertage[]['himmelfahrt'] = date("d.m.Y", $ostern + (39*$tag) ); // Christi Himmelfahrt
$feiertage[]['pfingstmontag'] = date("d.m.Y", $ostern + (50*$tag) ); // Pfingstmontag
$feiertage[]['fronleichnam'] = date("d.m.Y", $ostern + (60*$tag) ); // Fronleichnam
$feiertage[]['himmelfahrt'] = date("d.m.Y", mktime(0,0,0,8,15,$jahr) ); // Maria Himmelfahrt
$feiertage[]['deutsche_einheit'] = date("d.m.Y", mktime(0,0,0,10,3,$jahr) ); // Tag der deutschen Einheit
$feiertage[]['reformationstag'] = date("d.m.Y", mktime(0,0,0,10,31,$jahr) ); // Reformationstag
$feiertage[]['allerheiligen'] = date("d.m.Y", mktime(0,0,0,11,1,$jahr) ); // Allerheiligen
$feiertage[]['buss_bettag'] = date("d.m.Y", $advent4 - (32*$tag) ); // Buß und Bettag
$feiertage[]['weihnachtstag_1'] = date("d.m.Y", mktime(0,0,0,12,25,$jahr) ); // 1. Weihnachtstag
$feiertage[]['weihnachtstag_2'] = date("d.m.Y", mktime(0,0,0,12,26,$jahr) ); // 2. weihnachtstag
Hier das fertige Array für das Jahr 2025:
Array
(
[0] => Array
(
[neujahr] => 01.01.2025
)
[1] => Array
(
[heilige_koenige] => 06.01.2025
)
[2] => Array
(
[gruendonnerstag] => 17.04.2025
)
[3] => Array
(
[karfreitag] => 18.04.2025
)
[4] => Array
(
[ostersonntag] => 20.04.2025
)
[5] => Array
(
[ostermontag] => 21.04.2025
)
[6] => Array
(
[tag_der_arbeit] => 01.05.2025
)
[7] => Array
(
[himmelfahrt] => 29.05.2025
)
[8] => Array
(
[pfingstmontag] => 09.06.2025
)
[9] => Array
(
[fronleichnam] => 19.06.2025
)
[10] => Array
(
[himmelfahrt] => 15.08.2025
)
[11] => Array
(
[deutsche_einheit] => 03.10.2025
)
[12] => Array
(
[reformationstag] => 31.10.2025
)
[13] => Array
(
[allerheiligen] => 01.11.2025
)
[14] => Array
(
[buss_bettag] => 30.11.1969
)
[15] => Array
(
[weihnachtstag_1] => 25.12.2025
)
[16] => Array
(
[weihnachtstag_2] => 26.12.2025
)
)