Feiertage, vor allem die beweglichen, waren mal wieder Thema hier.
Also mal ein bisschen gebastelt, das Ergebnis will ich Euch nicht vorenthalten.
( Achtung, finale Tests stehen noch aus )
Enthält 1.) eine Funktion zur Berechnung des Ostersonntags und die darauf aufbauende Funktion zur Ermittlung aller Feiertage ( sowie einiger besonderer Nicht-Feiertage). Zu den Feiertagen im Array gibts noch Codes zur Überprüfung der regionalen Gültigkeit.
Spoiler anzeigen
; nur zum Testen, kann entsorgt werden
#include <Array.au3>
$Jahr=2010
$ftage= _FT_Feiertage_Array($Jahr)
_ArrayDisplay( $ftage ,"Feiertage " & $Jahr)
#include <Date.au3>
#cs ----------------------------------------------------------------------------
Func _FT_Berechne_Ostersonntag($iJahr)
Berechnung des Datums für den Ostersonntag für ein gegebenes Jahr (Gauss-Formel)
Parameter int $iJahr = Jahreszahl
Rückgabe String = Datum des Ostersonntags im Format YYYY/MM/DD
Abhängigkeiten: Benötigt Date.au3
#ce ----------------------------------------------------------------------------
Func _FT_Berechne_Ostersonntag($iJahr)
Local $d, $e
$d = mod( ( mod( (15 + ( int($iJahr / 100) - int($iJahr / 400) - 2) - ( int((8 * int($iJahr / 100) + 13) / 25) - 2)) , 30) + 19 * mod($iJahr , 19)) , 30 )
If $d = 29 OR ($d = 28 AND mod($iJahr , 19) >= 11) Then
$d -= 1
EndIf
$e = mod ( (2 * mod($iJahr,4) + 4 * mod($iJahr,7) + 6 * $d + mod( (6 + ( int($iJahr / 100) - int($iJahr / 400) - 2)) , 7) ) , 7 )
Return _DateAdd("d", $d+$e+1 , $iJahr & "/03/21")
EndFunc
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]Func func _FT_Feiertage_Array($iJahr)
Berechnung besonderer Tage im angegebenen Jahr
Parameter int $iJahr = Jahreszahl
Rückgabe 2D-Array aller Feiertage des angegebenen Jahres indices 1-Array[0][0]
wobei
Array[$i][0] = Datum des Feiertags im Format YYYY/MM/DD
Array[$i][1] = Bezeichung des Feiertags
Array[$i][2] = Regionalschlüssel für gesetzliche Feiertage
Regionalschlüssel:
BW = Baden-Würtemberg
BY = Bayern
BE = Berlin
BB = Brandenburg
HB = Bremen
HH = Hamburg
HE = Hessen
MV = Mecklenburg-Vorpommern
NI = Niedersachsen
NW = Nordrhein-Westfalen
RP = Rheinland-Pfalz
SL = Saarland
SN = Sachsen
ST = Sachsen-Anhalt
SH = Schleswig-Holstein
TH = Thüringen
AUG = Stadt Augsburg. Hat alles was Bayern(BY) auch hat und zusätzlich den 08.08 (Friedensfest)
BAU = Teile vom Kreis Bautzen und Westlausitzkreis, eigentl. Sachsen, zusätzlich Fronleichnam
BYK = bayerische Gemeinden mit überwiegend katholischer Bevölkerung
THK = dto. für Thüringen
Abhängigkeiten: Benötigt Date.au3
#ce ----------------------------------------------------------------------------
func _FT_Feiertage_Array($iJahr)
Local $i=0
Local $Feiertage[50][3], $OSo, $1Adv
$OSo = _FT_Berechne_Ostersonntag($iJahr)
$1Adv = _DateAdd("d", -_DateToDayOfWeekISO ( $iJahr, 12, 25)-22 , $iJahr & "/12/25")
; 1 - Neujahr
$i+=1
$Feiertage[$i][0] = $iJahr & "/01/01"
$Feiertage[$i][1] = "Neujahr"
$Feiertage[$i][2] = "BW-BY-BE-BB-HB-HH-HE-MV-NI-NW-RP-SL-SN-ST-SH-TH-AUG-BAU-BYK-THK"
; 2 - Heilige drei Könige
$i+=1
$Feiertage[$i][0] = $iJahr & "/01/06"
$Feiertage[$i][1] = "Heilige drei Könige"
$Feiertage[$i][2] = "BW-BY-ST-AUG"
; 3 - Mariä Lichtmess
$i+=1
$Feiertage[$i][0] = $iJahr & "/02/02"
$Feiertage[$i][1] = "Mariä Lichtmess"
$Feiertage[$i][2] = ""
; 4 - Valentinstag
$i+=1
$Feiertage[$i][0] = $iJahr & "/02/14"
$Feiertage[$i][1] = "Valentinstag"
$Feiertage[$i][2] = ""
; 5 - Rosenmontag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -48, $OSo )
$Feiertage[$i][1] = "Rosenmontag"
$Feiertage[$i][2] = ""
; 6 - Faschingsdienstag/Fastnacht
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -47, $OSo )
$Feiertage[$i][1] = "Faschingsdienstag/Fastnacht"
$Feiertage[$i][2] = ""
; 8 - Aschermittwoch
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -46, $OSo )
$Feiertage[$i][1] = "Aschermittwoch"
$Feiertage[$i][2] = ""
; 9 - Palmsonntag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -7, $OSo )
$Feiertage[$i][1] = "Palmsonntag"
$Feiertage[$i][2] = ""
;Gründonnerstag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -3, $OSo )
$Feiertage[$i][1] = "Gründonnerstag"
$Feiertage[$i][2] = ""
;10 - Karfreitag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -2, $OSo )
$Feiertage[$i][1] = "Karfreitag"
$Feiertage[$i][2] = "BW-BY-BE-BB-HB-HH-HE-MV-NI-NW-RP-SL-SN-ST-SH-TH-AUG-BAU-BYK-THK"
;11 - Karsamstag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -1, $OSo )
$Feiertage[$i][1] = "Karsamstag"
$Feiertage[$i][2] = ""
;12 - Ostersonntag
$i+=1
$Feiertage[$i][0] = $OSo
$Feiertage[$i][1] = "Ostersonntag"
$Feiertage[$i][2] = ""
;13 - Ostermontag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", 1, $OSo )
$Feiertage[$i][1] = "Ostermontag"
$Feiertage[$i][2] = "BW-BY-BY-BE-BB-HB-HH-HE-MV-NI-NW-RP-SL-SN-ST-SH-TH-AUG-BAU-BYK-THK"
;14 - Maifeiertag
$i+=1
$Feiertage[$i][0] = $iJahr & "/05/01"
$Feiertage[$i][1] = "Maifeiertag"
$Feiertage[$i][2] = "BW-BY-BE-BB-HB-HH-HE-MV-NI-NW-RP-SL-SN-ST-SH-TH-AUG-BAU-BYK-THK"
;15 - Muttertag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -_DateToDayOfWeekISO ( $iJahr , 5, 1) , $iJahr & "/05/14" )
$Feiertage[$i][1] = "Muttertag"
$Feiertage[$i][2] = ""
;16 - Christi Himmelfahrt
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", 39, $OSo )
$Feiertage[$i][1] = "Christi Himmelfahrt"
$Feiertage[$i][2] = "BW-BY-BE-BB-HB-HH-HE-MV-NI-NW-RP-SL-SN-ST-SH-TH-AUG-BAU-BYK-THK"
;17 - Pfingstsonntag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", 49, $OSo )
$Feiertage[$i][1] = "Pfingstsonntag"
$Feiertage[$i][2] = ""
;18 - Pfingstmontag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", 50, $OSo )
$Feiertage[$i][1] = "Pfingstmontag"
$Feiertage[$i][2] = "BW-BY-BE-BB-HB-HH-HE-MV-NI-NW-RP-SL-SN-ST-SH-TH-AUG-BAU-BYK-THK"
;19 - Fronleichnam
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", 60, $OSo )
$Feiertage[$i][1] = "Fronleichnam"
$Feiertage[$i][2] = "BW-BY-HE-NW-RP-SL-BAU-THK"
;20 - Friedensfest
$i+=1
$Feiertage[$i][0] = $iJahr & "/08/08"
$Feiertage[$i][1] = "Friedensfest"
$Feiertage[$i][2] = "AUG"
;21 - Mariä Himmelfahrt
$i+=1
$Feiertage[$i][0] = $iJahr & "/08/15"
$Feiertage[$i][1] = "Mariä Himmelfahrt"
$Feiertage[$i][2] = "SL-AUG-BYK"
;22 - Tag der deutschen Einheit
$i+=1
$Feiertage[$i][0] = $iJahr & "/10/03"
$Feiertage[$i][1] = "Tag der deutschen Einheit"
$Feiertage[$i][2] = "BW-BY-BE-BB-HB-HH-HE-MV-NI-NW-RP-SL-SN-ST-SH-TH-AUG-BAU-BYK-THK"
;Reformationstag
$i+=1
$Feiertage[$i][0] = $iJahr & "/10/31"
$Feiertage[$i][1] = "Reformationstag"
$Feiertage[$i][2] = "BB-MV-SN-ST-TH-BAU-THK"
;Allerheiligen
$i+=1
$Feiertage[$i][0] = $iJahr & "/11/01"
$Feiertage[$i][1] = "Allerheiligen"
$Feiertage[$i][2] = "BW-BY-NW-RP-SL-AUG-BYK"
;Volkstrauertag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -14, $1Adv )
$Feiertage[$i][1] = "Volkstrauertag"
$Feiertage[$i][2] = ""
;Buß- und Bettag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -11, $1Adv )
$Feiertage[$i][1] = "Buß- und Bettag"
$Feiertage[$i][2] = "SN-BAU"
;Totensonntag
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", -7, $1Adv )
$Feiertage[$i][1] = "Totensonntag"
$Feiertage[$i][2] = ""
;1.Advent
$i+=1
$Feiertage[$i][0] = $1Adv
$Feiertage[$i][1] = "1.Advent"
$Feiertage[$i][2] = ""
;2.Advent
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", 7, $1Adv )
$Feiertage[$i][1] = "2.Advent"
$Feiertage[$i][2] = ""
;3.Advent
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", 14, $1Adv )
$Feiertage[$i][1] = "3.Advent"
$Feiertage[$i][2] = ""
;4.Advent
$i+=1
$Feiertage[$i][0] = _DateAdd( "d", 21, $1Adv )
$Feiertage[$i][1] = "4.Advent"
$Feiertage[$i][2] = ""
;Heiligabend
$i+=1
$Feiertage[$i][0] = $iJahr & "/12/24"
$Feiertage[$i][1] = "Heiligabend"
$Feiertage[$i][2] = ""
;1.Weihnachtstag
$i+=1
$Feiertage[$i][0] = $iJahr & "/12/25"
$Feiertage[$i][1] = "1.Weihnachtstag"
$Feiertage[$i][2] = "BW-BY-BE-BB-HB-HH-HE-MV-NI-NW-RP-SL-SN-ST-SH-TH-AUG-BAU-BYK-THK"
;2.Weihnachtstag
$i+=1
$Feiertage[$i][0] = $iJahr & "/12/26"
$Feiertage[$i][1] = "2.Weihnachtstag"
$Feiertage[$i][2] = "BW-BY-BE-BB-HB-HH-HE-MV-NI-NW-RP-SL-SN-ST-SH-TH-AUG-BAU-BYK-THK"
;Sylvester
$i+=1
$Feiertage[$i][0] = $iJahr & "/12/31"
$Feiertage[$i][1] = "Sylvester"
$Feiertage[$i][2] = ""
$Feiertage[0][0] = $i
ReDim $Feiertage[$i+1][3]
;
;$i+=1
;$Feiertage[$i][0] =
;$Feiertage[$i][1] = ""
;$Feiertage[$i][2] = "BW-BY-BE-BB-HB-HH-HE-MV-NI-NW-RP-SL-SN-ST-SH-TH-AUG-BAU-BYK-THK"
return $Feiertage
EndFunc