Prüfung, ob Datum Wochenende oder Feiertag [PB4.40b7]
Verfasst: 25.11.2009 13:57
Brauchte grad in meiner Anwendung so eine Routine, vielleicht brauchts noch einer.
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.
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)