Benutzer-Werkzeuge

Webseiten-Werkzeuge


php:holiday

Dies ist eine alte Version des Dokuments!


Ermittlung der bundesweit gesetzlichen Feiertage

Feste Feiertage

Diese Feiertage fallen im gesamten Bundesland jedes Jahr auf das selbe Datum:

  • 01.01. Neujahrstag
  • 01.05. Tag der Arbeit
  • 03.10. Tag der Deutschen Einheit
  • 25.12. Erster Weihnachtsfeiertag
  • 26.12. zweiter Weihnachtsfeiertag

Bewegliche Feiertage

Alle beweglichen Feiertage können auf Grundlage des Ostersonntags berechnet werden.

Für Ostersonntag gilt:

  • Ostersonntag ist der Sonntag nach dem ersten Vollmond ab Frühlingsbeginn, also ab dem 21. März
  • Der durchschnittliche Abstand zwischen zwei Vollmonden beträgt 29 Tage, zwölf Stunden und vierundvierzig Minuten.
  • Somit liegt der frühestmögliche Termin für Ostersonntag beim 22. März und der späteste beim 25. April
gesetzlicher Feiertag Zeitpunkt Bundesländer
Karfreitag Ostersonntag - 2 Tage alle
Ostersonntag Ostersonntag nur Brandenburg
Ostermontag Ostersonntag + 1 Tag alle
Christi Himmelfahrt Ostersonntag + 39 Tage alle
Pfingstsonntag Ostersonntag + 49 Tage alle
Pfingstmontag Ostersonntag + 50 Tage alle
Fronleichnam Ostersonntag + 60 Tage nur SL, RP, NW, BY, BW und TH

Ostersonntag mit der PHP-Funktion "easter_date" herausfinden

Die PHP-Funktion easter_date( $year ) gibt den Unix-Timestamp (Anzahl der Sekunden seit dem 01.01.1970) vom Ostersonntag um 0:00 Uhr vom als Parameter übergebendem Jahr zurück. Einschränkung: Es können nur Jahreszahlen von 1970 bis 2037 übergeben werden.

Wichtiger technischer Hinweis: Die Funktion „easter_date“ ist eine Funktion aus der Erweiterung „calendar“. Wenn PHP auf einem Windows Betriebssystem ausgeführt wird sind die Kalenderfunktionen bereits automatisch enthalten. Auf Linux-Systemen hingegen muss PHP mit der Erweiterung '–enable-calendar' kompiliert werden. Andernfalls wird ein Fatal Error ('Call to undefined function') geworfen.


Codebeispiel

class.calendar.php
class calendar
{
    private $holidays = array();
 
    /**
     * calendar constructor.
     * @param int|string $year
     */
    public function __construct( $year = 0 )
    {
        $year = ( $year == 0 ) ? date( 'Y' ) : $year;
 
        // feste Feiertage definieren
        $this->holidays[] = '01.01.'; // Neujahr
        $this->holidays[] = '01.05.'; // Tag der Arbeit
        $this->holidays[] = '03.10.'; // Tag der Deutschen Einheit
        $this->holidays[] = '25.12.'; // 1. Weihnachtsfeiertag
        $this->holidays[] = '26.12.'; // 2. Weihnachtsfeiertag
 
        // alle beweglichen Feiertage von Karfreitag bis Pfinstmontag
        $easterSunday = date( 'd.M.Y', easter_date( $year ) );
 
        foreach( array( -2, 0, 1, 39, 49, 50 ) as $day )
        {
            $time = array( $easterSunday, $day, 'day');
            $ts = strtotime( implode( ' ', $time ) );
            $this->holidays[] = date( 'd.m.', $ts );
        }
    }
 
    /**
     * @param int $timestamp
     * @return bool
     */
    public function isHoliday( $timestamp )
    {
        $date = date( 'd.m.', $timestamp );
        return in_array( $date, $this->holidays );
    }
}

Anwendungsbeispiel:

$cal = new calendar( 2016 );
$days = ( date( 'L' ) ) ? 366 : 365; // Schaltjahr: 366 Tage, sonst 365 Tage
 
for( $day = 0; $day < $days; $day++ ) // jeden Tag des Jahres anzeigen
{
    $time = array( '01.01.' . date( 'Y' ), $day, 'day' );
    $timestamp = strtotime( implode( ' ', $time ) );
 
    if( $cal->isHoliday( $timestamp ) ) // wenn der Tag ein Feiertag ist
    {
        echo "Der " . date( 'd.m.Y.', $timestamp ) . " ein Feiertag!<br/>";
    }
    else // wenn der Tag KEIN Feiertag ist
    {
        echo "Der " . date( 'd.m.Y.', $timestamp ) . " ist kein Feiertag<br/>";
    }
}
php/holiday.1538855853.txt.gz · Zuletzt geändert: 2018/10/06 21:57 (Externe Bearbeitung)