Du bist nicht angemeldet.

Kontrollzentrum

Adsense

Spenden

Jeder Euro hilft uns, euch zu helfen.

Bei Überweisungen bitte per PN die Daten erfragen.

Downloads

Lieber Besucher, herzlich willkommen bei: AutoIt.de - Das deutsche AutoIt-Forum. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

  • »TheLuBu« ist der Autor dieses Themas

Registrierungsdatum: 12. Mai 2009

Wohnort: Mönchengladbach

Beruf: Student / Azubi

  • Private Nachricht senden

1

Mittwoch, 17. August 2011, 12:02

Feiertagsrechner

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 Spoiler

AutoIt-Quellcode

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
;===============================================================================
; 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 (LuBu@veytal.com)
; Remarks...........:   Using Gauss algorithm for Computus
; Copyright.........:    TheLuBu (LuBu@veytal.com)
;===============================================================================
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
MfG TheLuBu
_________________________________________________________________

Meine Scripte

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TheLuBu« (17. August 2011, 12:09)


BugFix

Der Bug Fixer

Registrierungsdatum: 17. Februar 2006

Wohnort: Sa.-Anhalt

  • Private Nachricht senden

2

Mittwoch, 17. August 2011, 12:38

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.
MfG BugFix


MyUDF:
_ArraySort_2ary | _Array2DSortByLen | _Array2DDblDel | _Array2DDelete | _Array2DEmptyDel | _Array2DSearch | _Array2DInsert | _Array2DSplit | _Array2DJoin | _Array2DMirror | _SubArray2DGetEntry | _SubArray2DSetEntry | _FileWriteFromArray2D | _FileReadToArray2D
Array-Tutorial | Bit-Tutorial | Dll-Tutorial | RegExp-Beispiel
- - - Du möchtest dich gern mit mir direkt austauschen? Versuch mal, ob ich gerade in meinem Privat-Chat bin -- oder folge mir @BugFix_AutoIt.

  • »TheLuBu« ist der Autor dieses Themas

Registrierungsdatum: 12. Mai 2009

Wohnort: Mönchengladbach

Beruf: Student / Azubi

  • Private Nachricht senden

3

Mittwoch, 17. August 2011, 13:01

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 ;)
MfG TheLuBu
_________________________________________________________________

Meine Scripte


Thema bewerten