-
Notifications
You must be signed in to change notification settings - Fork 73
/
Copy pathFeiertage.ahk
198 lines (185 loc) · 8.88 KB
/
Feiertage.ahk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
; Link:
; Author:
; Date:
; for: AHK_L
/*
*/
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
;Als test alle Feiertage in Deutschland mit Benennung
msgbox, % feiertage("2019","dl","longdate")
;Immer-Sonntage sind nicht dabei
msgbox, % feiertage("2019","ni","yyyyMMdd")
return
feiertage(jahr,land,timestrg){
;https://autohotkey.com/board/topic/97400-feiertage-berechnen-osterformel-nach-heiner-lichtenberg/
;https://www.excel-coach.com/excel-und-die-feiertage/
;https://www.dagmar-mueller.de/wdz/html/feiertagsberechnung.html
;https://www.ferienwiki.de/feiertage/2019/de
; ==============
;timestrg:="yyyyMMdd"
;timestrg:="longdate"
; Ostersonntag
ttos:="`nOstersonntag: "
X := jahr ; Jahreszahl, für die Ostern berechnet werden soll
K := Floor(X/100) ; Säkularzahl
M := 15+Floor((3*K+3)/4)-Floor((8*K+13)/25) ; säkulare Mondschaltung
S := 2-Floor((3*K+3)/4) ; säkulare Sonnenschaltung
A := Mod(X,19) ; Mondparameter
D := Mod(19*A+M,30) ; Keim für den ersten Vollmond im Frühling
R := Floor(D/29)+(Floor(D/28)-Floor(D/29))*Floor(A/11) ; kalendarische Korrekturgröße (beseitigt die Gaußschen Ausnahmeregeln)
OG := 21+D-R ; Ostergrenze (Märzdatum des Ostervollmonds)
SZ := 7-Mod(X+Floor(X/4)+S,7) ; Erster Sonntag im März
OE := 7-Mod(OG-SZ,7) ; Entfernung des Ostersonntag von der Ostergrenze in Tagen
OS := OG+OE ; Märzdatum (ggf. in den April verlängert) des Ostersonntag, (32. März = 1. April usw.)
Os:= x . (OS > 31 ? "04" SubStr("0"OS-31,-1) : "03" OS)
FormatTime, oss,% os, % timestrg
; ==============
;Buß- und Bettag ;Mittwoch vor dem 23. November
tbbt:="`nBuß- und Bettag: "
md := OG+OE
tOs:= md > 31 ? SubStr("0"md-31,-1) : md ;tag des Ostersonntags für die Berechnung des Buß und Bettags https://www.dagmar-mueller.de/wdz/html/feiertagsberechnung.html
tz:= md > 31 ? Mod((30 - tos), 7) : Mod((33 - tos), 7)
bbt:="20191122"
bbt += -tz, days
FormatTime, bbt,% bbt, % timestrg
; ==============
; NeuJahr
tnj:="`nNeuJahr: "
nj:= jahr . "0101"
FormatTime, nj,% nj, % timestrg
; ==============
; Heilige Drei Könige
thdk:="`nHeilige Drei Könige: "
hdk:= jahr . "0106"
FormatTime, hdk,% hdk, % timestrg
; ==============
; Internationaler Frauentag (nur Berlin)
tift:="`nInternationaler Frauentag: "
ift:= jahr . "0308"
FormatTime, ift,% ift, % timestrg
; ==============
; Tag der Arbeit
ttda:="`nTag der Arbeit: "
tda:= jahr . "0501"
FormatTime, tda,% tda, % timestrg
; ==============
; Augsburger Friedensfest
taff:="`nAugsburger Friedensfest: "
aff:= jahr . "0808"
FormatTime, aff,% aff, % timestrg
; ==============
; Mariä Himmelfahrt
tmhf:="`nMariä Himmelfahrt: "
mhf:= jahr . "0815"
FormatTime, mhf,% mhf, % timestrg
; ==============
; Tag der Deutschen Einheit
ttdde:="`nTag der Deutschen Einheit: "
tdde:= jahr . "1003"
FormatTime, tdde,% tdde, % timestrg
; ==============
; Reformationstag
trt:="`nReformationstag: "
rt:= jahr . "1031"
FormatTime, rt,% rt, % timestrg
; ==============
; Allerheiligen
tah:="`nAllerheiligen: "
ah:= jahr . "1101"
FormatTime, ah,% ah, % timestrg
; ==============
; 1. Weihnachtsfeiertag
tw1:="`n1. Weihnachtsfeiertag: "
w1:= jahr . "1225"
FormatTime, w1,% w1, % timestrg
; ==============
; 1. Weihnachtsfeiertag
tw2:="`n1. Weihnachtsfeiertag: "
w2:= jahr . "1226"
FormatTime, w2,% w2, % timestrg
; ==============
; Karfreitag Freitag vor Ostersonntag = OS – 2
tkfr:="`nKarfreitag: "
kfr:=os
kfr += -2, days
FormatTime, kfr,% kfr, % timestrg
; ==============
;Ostermontag Montag nach Ostersonntag = OS + 1
tosm:="`nOstermontag: "
osm:=os
osm += 1, days
FormatTime, osm,% osm, % timestrg
; ==============
;Christi Himmelfahrt 39 Tage nach Ostersonntag = OS + 39
tchf:="`nChristi Himmelfahrt: "
chf:=os
chf += 39, days
FormatTime, chf,% chf, % timestrg
; ==============
;Pfingstsonntag 49 Tage nach Ostersonntag = OS + 49
tpfs:="`nPfingstsonntag: "
pfs:=os
pfs += 49, days
FormatTime, pfs,% pfs, % timestrg
; ==============
;Pfingstmontag 50 Tage nach Ostersonntag = OS + 50
tpfm:="`nPfingstmontag: "
pfm:=os
pfm += 50, days
FormatTime, pfm,% pfm, % timestrg
; ==============
;Fronleichnam 60 Tage nach Ostersonntag = OS + 60
tfl:="`nFronleichnam: "
fl:=os
fl += 60, days
FormatTime, fl,% fl, % timestrg
; ==============
; alle (dl)
;ft:= nj "," hdk "," ift "," kfr "," os "," osm "," tda "," chf "," pfs "," pfm "," fl "," aff "," mhf "," tdde "," rt "," ah "," bbt "," w1 "," w2
;ft:= tnj nj "," thdk hdk "," tift ift "," tkfr kfr "," ttos oss "," tosm osm "," ttda tda "," tchf chf "," tpfs pfs "," tpfm pfm "," tfl fl "," taff aff "," tmhf mhf "," ttdde tdde "," trt rt "," tah ah "," tbbt bbt "," tw1 w1 "," tw2 w2
;return ft
if (land = "dl") ;test alle
ft:= tnj nj "," thdk hdk "," tift ift "," tkfr kfr "," ttos oss "," tosm osm "," ttda tda "," tchf chf "," tpfs pfs "," tpfm pfm "," tfl fl "," taff aff "," tmhf mhf "," ttdde tdde "," trt rt "," tah ah "," tbbt bbt "," tw1 w1 "," tw2 w2
else if (land = "bw") ;Feiertage Baden-Württemberg
ft:= nj "," hdk "," kfr "," osm "," tda "," chf "," pfm "," fl "," tdde "," ah "," w1 "," w2
else if (land = "by") ;Feiertage Bayern alle
ft:= nj "," hdk "," kfr "," osm "," tda "," chf "," pfm "," fl "," aff "," mhf "," tdde "," rt "," ah "," bbt "," w1 "," w2
else if (land = "bya") ;Feiertage Bayern alle
ft:= nj "," hdk "," kfr "," osm "," tda "," chf "," pfm "," fl "," aff "," mhf "," tdde "," rt "," ah "," bbt "," w1 "," w2
else if (land = "byk") ;Feiertage Bayern kath.
ft:= nj "," hdk "," kfr "," osm "," tda "," chf "," pfm "," fl "," mhf "," tdde "," rt "," ah "," bbt "," w1 "," w2
else if (land = "byp") ;Feiertage Bayern prot.
ft:= nj "," hdk "," kfr "," osm "," tda "," chf "," pfm "," fl "," tdde "," rt "," ah "," bbt "," w1 "," w2
else if (land = "be") ;Feiertage Berlin
ft:= nj "," ift "," kfr "," osm "," tda "," chf "," pfm "," tdde "," w1 "," w2
else if (land = "bb") ;Feiertage Brandenburg
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," tdde "," rt "," w1 "," w2
else if (land = "hb") ;Feiertage Bremen
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," tdde "," rt "," w1 "," w2
else if (land = "hh") ;Feiertage Hamburg
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," tdde "," rt "," w1 "," w2
else if (land = "he") ;Feiertage Hessen
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," fl "," tdde "," w1 "," w2
else if (land = "mv") ;Feiertage Mecklenburg-Vorpommern
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," tdde "," rt "," w1 "," w2
else if (land = "ni") ;Feiertage Niedersachsen
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," tdde "," rt "," w1 "," w2
else if (land = "nw") ;Feiertage Nordrhein-Westfalen
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," fl "," tdde "," ah "," w1 "," w2
else if (land = "rp") ;Feiertage Rheinland-Pfalz
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," fl "," tdde "," ah "," w1 "," w2
else if (land = "sl") ;Feiertage Saarland
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," fl "," mhf "," tdde "," ah "," w1 "," w2
else if (land = "sn") ;Feiertage Sachsen
ft:= nj "," hdk "," kfr "," osm "," tda "," chf "," pfm "," tdde "," rt "," w1 "," w2
else if (land = "st") ;Feiertage Sachsen-Anhalt
ft:= nj "," hdk "," kfr "," osm "," tda "," chf "," pfm "," tdde "," rt "," w1 "," w2
else if (land = "sh") ;Feiertage Schleswig-Holstein
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," tdde "," rt "," w1 "," w2
else if (land = "th") ;Feiertage Thüringen
ft:= nj "," kfr "," osm "," tda "," chf "," pfm "," tdde "," rt "," w1 "," w2
return ft
}