• Ich habe einen Feiertagskalender geschrieben, vielleicht kann den jemand von euch brauchen.
    Ich weiß, das BugFix einen ähnlichen geschrieben hat, aber meiner gibt wirklich nur die gesetzlichen Feiertage zurück und lässt Tage wie Muttertag, Vatertag, Valentinstag etc. außen vor. Weiterhin kann nach Bundesländern sortiert werden.
    Ich habe es für ein Programm gebraucht, das an Feiertagen nicht laufen soll, sonst aber rund um die Uhr.
    Hier dann das Script:

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ; Function Name.....: _DateLegalHolidays($sState = "All", $iYear = @Year)
    ; Description.......: Gibt alle deutschen gesetzlichen Feiertage mit Datum in einem Array aus
    ; Parameter(s)......: $sState = Bundesland (Standard = All)
    ; ALL = Alle Feiertage
    ;~ BW = Baden-Württemberg
    ;~ NI = Niedersachsen
    ;~ BY = Bayern
    ;~ NW = Nordrhein-Westfalen
    ;~ BE = Berlin
    ;~ RP = Rheinland-Pfalz
    ;~ BB = Brandenburg
    ;~ SL = Saarland
    ;~ HB = Bremen
    ;~ SN = Sachsen
    ;~ HH = Hamburg
    ;~ ST = Sachsen-Anhalt
    ;~ HE = Hessen
    ;~ SH = Schleswig-Holstein
    ;~ MV = Mecklenburg-Vorpommern
    ;~ TH = Thüringen
    ; Return Value(s)...: Erfolg - Gibt Ein Array aus, in der ersten Dimension stehen die Daten, in der zweiten der Namen des Feiertages.
    ; $avHolidayReturn[0][0] gibt die Anzahl an Feiertagen für das Bundesland an
    ; Fehler
    ; Author(s).........: TheLuBu ([email='LuBu@veytal.com'][/email])
    ; Remarks...........: Using Gauss algorithm for Computus
    ; Copyright.........: TheLuBu ([email='LuBu@veytal.com'][/email])
    ;===============================================================================
    Func _DateLegalHolidays($sState = "All")
    Local $iYear, $avHolidayDate[12][3], $iModStart, $iModDiv, $iModLast, $iHolidayDay, $iHolidayMonth, $iFirstAdvent, $avHolidayReturn[16][2], $iRow = 0
    For $i = 24 To 1 Step -1
    If _DateToDayOfWeek($iYear, 12, $i) = 1 Then
    If StringLen($i) = 1 Then
    $i = "0" & $i
    EndIf
    $iFirstAdvent = $iYear & "/12/" & $i
    ExitLoop
    EndIf
    Next
    $iDivYear = Int($iYear / 100)
    $iModStart = Mod(19 * Mod($iYear, 19) + $iDivYear - Int($iDivYear / 4) - Int(($iDivYear - Int(($iDivYear + 8) / 25) + 1) / 3) + 15, 30)
    $iModDiv = Mod(32 + 2 * Mod($iDivYear, 4) + 2 * Int(Mod($iYear, 100) / 4) - $iModStart - Mod(Mod($iYear, 100), 4), 7)
    $iModLast = $iModStart + $iModDiv - 7 * Int((Mod($iYear, 19) + 11 * $iModStart + 22 * $iModDiv) / 451) + 22
    If $iModLast - 31 < 1 Then
    $iHolidayDay = $iModLast
    Else
    $iHolidayDay = $iModLast - 31
    EndIf
    If $iModLast > 31 Then
    $iHolidayMonth = "04"
    Else
    $iHolidayMonth = "03"
    EndIf
    $avHolidayDate[0][0] = $iYear & "/" & $iHolidayMonth & "/" & $iHolidayDay
    $avHolidayDate[0][1] = "Ostersonntag"
    $avHolidayDate[0][2] = "All"
    $avHolidayDate[1][0] = _DateAdd("D", -2, $avHolidayDate[0][0])
    $avHolidayDate[1][1] = "Karfreitag"
    $avHolidayDate[1][2] = "All"
    $avHolidayDate[2][0] = _DateAdd("D", 1, $avHolidayDate[0][0])
    $avHolidayDate[2][1] = "Ostermontag"
    $avHolidayDate[2][2] = "All"
    $avHolidayDate[3][0] = _DateAdd("D", 39, $avHolidayDate[0][0])
    $avHolidayDate[3][1] = "Christi Himmelfahrt"
    $avHolidayDate[3][2] = "All"
    $avHolidayDate[4][0] = _DateAdd("D", 50, $avHolidayDate[0][0])
    $avHolidayDate[4][1] = "Pfingstmontag"
    $avHolidayDate[4][2] = "All"
    $avHolidayDate[5][0] = _DateAdd("D", 60, $avHolidayDate[0][0])
    $avHolidayDate[5][1] = "Fronleichnam"
    $avHolidayDate[5][2] = "BW,BY,HE,NW,RP,SL"
    $avHolidayDate[6][0] = @YEAR & "/10/03"
    $avHolidayDate[6][1] = "Tag der Deutschen Einheit"
    $avHolidayDate[6][2] = "All"
    $avHolidayDate[7][0] = @YEAR & "/01/01"
    $avHolidayDate[7][1] = "Neujahr"
    $avHolidayDate[7][2] = "All"
    $avHolidayDate[8][0] = @YEAR & "/05/01"
    $avHolidayDate[8][1] = "Maifeiertag"
    $avHolidayDate[8][2] = "All"
    $avHolidayDate[9][0] = @YEAR & "/11/01"
    $avHolidayDate[9][1] = "Allerheiligen"
    $avHolidayDate[9][2] = "BW,BY,NW,RP,SL"
    $avHolidayDate[10][0] = @YEAR & "/12/25"
    $avHolidayDate[10][1] = "1. Weihnachtstag"
    $avHolidayDate[10][2] = "All"
    $avHolidayDate[11][0] = @YEAR & "/12/26"
    $avHolidayDate[11][1] = "2. Weihnachtstag"
    $avHolidayDate[11][2] = "All"
    $avHolidayDate[12][0] = @YEAR & "/01/06"
    $avHolidayDate[12][1] = "Heilige Drei Könige"
    $avHolidayDate[12][2] = "BW,BY,ST"
    $avHolidayDate[13][0] = @YEAR & "/08/15"
    $avHolidayDate[13][1] = "Maria Himmelfahrt"
    $avHolidayDate[13][2] = "SL"
    $avHolidayDate[14][0] = @YEAR & "/10/31"
    $avHolidayDate[14][1] = "Reformationstag"
    $avHolidayDate[14][2] = "BB,MV,SN,ST,TH"
    $avHolidayDate[15][0] = _DateAdd("D", -11, $iFirstAdvent)
    $avHolidayDate[15][1] = "Buß und Bettag"
    $avHolidayDate[15][2] = "SA"
    If $sState <> "All" Then
    For $i = 0 To UBound($avHolidayDate) - 1
    If $avHolidayDate[$i][2] = "All" Or $avHolidayDate[$i][2] = $sState Then
    $iRow += 1
    $avHolidayReturn[$iRow][0] = $avHolidayDate[$i][0]
    $avHolidayReturn[$iRow][1] = $avHolidayDate[$i][1]
    EndIf
    Next
    ReDim $avHolidayReturn[$iRow + 1][2]
    $avHolidayReturn[0][0] = $iRow
    Return $avHolidayReturn
    Else
    Return $avHolidayDate
    EndIf
    EndFunc ;==>_DateLegalHolidays

    [/autoit]
    • Offizieller Beitrag

    Ich weiß, das BugFix einen ähnlichen geschrieben hat, aber meiner gibt wirklich nur die gesetzlichen Feiertage zurück und lässt Tage wie Muttertag, Vatertag, Valentinstag etc. außen vor. Weiterhin kann nach Bundesländern sortiert werden.


    All das kannst du mit dieser Funktion ebenso machen. Einfach einen Filter auf das Ergebnisarray und fertig. ;)
    Alle erforderlichen Daten sind enthalten.

  • Bei meiner Funktion muss jetzt kein Filter mehr rein ;)
    Ich weiß das deine Funktion ebenso die Feiertage enthält, aber ich wollte halt meine eigene basteln, und die liefert halt ein etwas anderes Array zurück ;)