• 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
    [autoit]

    ; nur zum Testen, kann entsorgt werden
    #include <Array.au3>
    $Jahr=2010
    $ftage= _FT_Feiertage_Array($Jahr)
    _ArrayDisplay( $ftage ,"Feiertage " & $Jahr)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <Date.au3>
    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit]

    #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] = ""

    [/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit]
  • Doch, die gibt es, z.B. meine _beepton UDF , die ich gestern gepostet habe... Auf so eine verrückte Idee ist bis jetzt keiner gekommen ^^

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Verdammt, hast recht... da bleibt mir nur noch die möglichkeit, das meins besser werden muss, als die, die es gibt.(Auf jeden fall ist meine jetztige Lösung eleganter/kürzer als die meißten anderen...) Werde noch eine Klavieratur erstellen mit Schwarzen Tasten und eben die Möglichkeit, die Stücke aufzuzeichnen und als .exe auszugeben.

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"