Ich hab dioe Feiertagsprüfung über Web gemacht, da ich nicht nur kirchliche Tage brauchte, ausserdem ists ja in jedem Land verschieden - sonst hätte ja die Ostersonntagroutine mit Gauss mathematik gereicht.

Rückgabe ist der nächste verfügbare Werktag.
Code: Alles auswählen
;
; Datumsprüfung: Ist ein Feiertag/Wochenende vorliegt
; Free Code
; Purebasic v4.40b7
; 24.11.2009
; Beispiel
ddat = Date() ; Datum heute als Basis
datum = AddDate(ddat,#PB_Date_Day,1) ; Welches Datum prüfen ? zB: wie hier: Morgen
; Begin Program:
pdatum$ = FormatDate("%dd.%mm.%yyyy",datum) ; Format wie auf webseite (für suche)
Debug pdatum$ + " : Gefragtes Datum" ; ** was zu sehen
;net$ = "http://www.nrw-live.de/link/feiertage-nrw.html" ; Alternative Webseite für Feiertage
net$ = "http://www.schulferien.org/Feiertage/Feiertage_Nordrhein_Westfalen.html" ; Feiertagsliste für NRW
tw = OpenWindow(#PB_Any, 0, 0, 600, 300, "WebGadget", #PB_Window_Invisible) ; Do not bother user with flickering explorer
If tw
wg0 = WebGadget(#PB_Any, 10, 10, 580, 280, net$)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
While GetGadgetAttribute(wg0, #PB_Web_Busy) ; Warten bis seite geladen ist
While WindowEvent(): Delay(1) : Wend
Wend
Break
EndSelect
ForEver
a0$ = GetGadgetItemText(wg0,#PB_Web_HtmlCode) ; lese den htmlcode aus dem webgadget
Repeat
tpos = FindString(a0$,pdatum$,1) ; Datumssuche
If tpos ; gefunden
Debug pdatum$ +" : Feiertag" ; ** was zu sehen
datum = AddDate(datum,#PB_Date_Day,1) ; Feiertag: also +1 tag weiter
pdatum$ = FormatDate("%dd.%mm.%yyyy",datum) ; Format wie auf webseite (für suche)
Continue ; Das Nach-Feiertag-Datum auch prüfen
Else ; Kein Feiertag !
If DayOfWeek(datum) >0 And DayOfWeek(datum) <6 ; Auch kein Wochenende ?
Break ; Kein Feiertag und kein WoEnde !! => Raus, fertig
EndIf
EndIf
If DayOfWeek(datum) =0 ; Es ist ein Sonntag
Debug pdatum$ + " : Sonntag" ; ** was zu sehen
datum = AddDate(datum,#PB_Date_Day,1) ; Also +1 Tag auf Montag gehen
pdatum$ = FormatDate("%dd.%mm.%yyyy",datum) ; Format wie auf webseite (für suche)
ElseIf DayOfWeek(datum) =6 ; Es ist ein Samstag
Debug pdatum$ + " : Samstag" ; ** was zu sehen
datum = AddDate(datum,#PB_Date_Day,2) ; Also +2 Tag auf Montag gehen
pdatum$ = FormatDate("%dd.%mm.%yyyy",datum) ; Format wie auf webseite (für suche)
EndIf
ForEver ; Weiter prüfen bis zum Break
CloseWindow(tw)
EndIf
Debug "Erster Werktag nach WE/Feiertag: " + FormatDate("%dd.%mm.%yyyy",datum)