Hey,
ich habe eine Funktion gefunden, womit man alle Feiertrage berechnen kann.
Jedoch gibt es mir das aus was ich nicht gebrauchen kann:P
Code
Feiertage2008 := Feiertage("2008","Komplett")
out := "Feiertage 2008`n`n`t"
Loop, Parse, FeierTage2008, |
{
StringSplit, w, A_LoopField, :, %A_Space%
Feiertag := RegExReplace(w1,"([A-Z])"," $1")
FormatTime, Datum, %w2%, dddd', den 'd. MMMM yyyy
out .= Feiertag " findet am " Datum " statt.`n`t"
}
MsgBox % out
return
FeierTage(_Jahr="",Art="",Delimiter="|")
{
_Jahr := (_Jahr) ? _Jahr : A_YYYY
FeiertagListe=
(LTrim Join,
NeuJahr=01.01.Jahr
HlDreiKönige=06.01.Jahr
Rosenmontag=Ostersonntag-48
Faschingsdienstag=Ostersonntag-47
Aschermittwoch=Ostersonntag-46
Gründonnerstag=Ostersonntag-3
Karfreitag=Ostersonntag-2
Karsamstag=Ostersonntag-1
Ostermontag=Ostersonntag+1
ChristiHimmelfahrt=Ostersonntag+39
Pfingstsonntag=Ostersonntag+49
Pfingstmontag=Ostersonntag+50
FrankfurterWäldchestag=Ostersonntag+51
Fronleichnam=Ostersonntag+60
TagDerArbeit=01.05.Jahr
AugsburgerFriedensfest=08.08.Jahr
MariäHimmerfahrt=15.08.Jahr
TagDerDeutschenEinheit=03.10.Jahr
Reformationstag=31.10.Jahr
Alleheiligen=01.11.Jahr
MariäEmpfängnis=08.12.Jahr
HeiligAbend=24.12.Jahr
ErsterWeihnachtstag=25.12.Jahr
ZweiterWeihnachtstag=26.12.Jahr
Silvester=31.12.Jahr
)
;Ostersonntagberechnung: (Quelle: http://de.wikipedia.org/wiki/Osterdatum)
g := mod(_Jahr,19), c := _Jahr//100
h := mod((c-(c//4)-((8*c+13)//25)+19*g+15),30)
i := h-(h//28)*(1-(29//(h+1))*((21-G)//11))
j := mod((_Jahr+(_Jahr//4)+i+2-c+(c//4)),7)
l := i-j
oMonat := 3 + ((l+40)//44), OSonntag := l + 28 - 31 * (oMonat//4)
oDate := ((StrLen(oSonntag)<2) ? "0":"") oSonntag ".0" oMonat "." Jahr " 00:00AM"
OsterSonntag := DateParse(oDate)
;Feiertage
out := ""
Loop, Parse, FeiertagListe,`,
{
StringSplit, t, A_LoopField, =
if RegExMatch(t2,"[-+]")
{
mod := (InStr(t2,"-")) ? 1 : 0, d := RegExReplace(t2,"[^\d]+?")
srcVar := RegExReplace(t2,"i)[^a-zßöäü]+")
srcValue := %srcVar%, dayMod := (mod) ? d * (-1) : d
EnvAdd, srcValue, %dayMod%, days
} else if RegExMatch(t2,"i)Jahr") {
srcValue := RegExReplace(t2,"i)Jahr",_Jahr) " 00:00AM"
srcValue := DateParse(srcValue)
} else {
srcValue := t2
}
out .= ((Art="Komplett") ? t1 ": " : "") srcValue Delimiter
}
Return SubStr(out,1,-1)
}
DateParse(str) { ;v 1.04
; Titans DayParse: http://www.autohotkey.net/~Titan/#dateparse
; Discussion: http://www.autohotkey.com/forum/topic20405.html
; Thx, Titan
static e2 = "i)(?:(\d{1,2}+)[\s\.\-\/,]+)?(\d{1,2}|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\w*)[\s\.\-\/,]+(\d{2,4})"
str := RegExReplace(str, "((?:" . SubStr(e2, 42, 47) . ")\w*)(\s*)(\d{1,2})\b", "$3$2$1", "", 1)
If RegExMatch(str, "i)^\s*(?:(\d{4})([\s\-:\/])(\d{1,2})\2(\d{1,2}))?"
. "(?:\s*[T\s](\d{1,2})([\s\-:\/])(\d{1,2})(?:\6(\d{1,2})\s*(?:(Z)|(\+|\-)?"
. "(\d{1,2})\6(\d{1,2})(?:\6(\d{1,2}))?)?)?)?\s*$", i)
d3 := i1, d2 := i3, d1 := i4, t1 := i5, t2 := i7, t3 := i8
Else If !RegExMatch(str, "^\W*(\d{1,2}+)(\d{2})\W*$", t)
RegExMatch(str, "i)(\d{1,2})\s*:\s*(\d{1,2})(?:\s*(\d{1,2}))?(?:\s*([ap]m))?", t)
, RegExMatch(str, e2, d)
f = %A_FormatFloat%
SetFormat, Float, 02.0
d := (d3 ? (StrLen(d3) = 2 ? 20 : "") . d3 : A_YYYY)
. ((d2 := d2 + 0 ? d2 : (InStr(e2, SubStr(d2, 1, 3)) - 40) // 4 + 1.0) > 0
? d2 + 0.0 : A_MM). ((d1 += 0.0) ? d1 : A_DD) . t1
+ (t1 = 12 ? t4 = "am" ? -12.0 : 0.0 : t4 = "am" ? 0.0 : 12.0) . t2 + 0.0 . t3 + 0.0
SetFormat, Float, %f%
Return, d
}
Alles anzeigen
Ich brauche praktisch eine If-Schleife
Das muss ich haben.
Heißt eine Schleife die all die Daten erstmal berechnet und dann die if-abfrage mit allen Daten ausprobiert, außer es wurde schon was gefunden dann wird sie gebreaked.
mfg