Prüfung, ob Datum Wochenende oder Feiertag [PB4.40b7]

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
dag
Beiträge: 12
Registriert: 16.06.2009 15:01

Prüfung, ob Datum Wochenende oder Feiertag [PB4.40b7]

Beitrag von dag »

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.


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)
Bild
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Re: Prüfung, ob Datum Wochenende oder Feiertag [PB4.40b7]

Beitrag von Hyper »

Hallo dag,

gute Sache; nur ein Hinweis ohne es getestet zu haben: man sollte erwähnen, dass hierzu ein Zugriff auf das Internet erfolgt und mit Deiner Version nur die Feiertage von NRW angezeigt werden.
PB 5.72
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Prüfung, ob Datum Wochenende oder Feiertag [PB4.40b7]

Beitrag von Kiffi »

Hyper hat geschrieben:man sollte erwähnen, dass hierzu ein Zugriff auf das Internet erfolgt und mit Deiner Version nur die Feiertage von NRW angezeigt werden.
beides hat er indirekt mit dieser Zeile erwähnt:

Code: Alles auswählen

net$ = "http://www.schulferien.org/Feiertage/Feiertage_Nordrhein_Westfalen.html"  ; Feiertagsliste für NRW
@dag: :allright:

Grüße ... Kiffi
a²+b²=mc²
dag
Beiträge: 12
Registriert: 16.06.2009 15:01

Re: Prüfung, ob Datum Wochenende oder Feiertag [PB4.40b7]

Beitrag von dag »

@ Hyper : Ich habs im Kurztext doch auch erwähnt.. Vielleicht wars ja nicht deutlich genug.
Ich hab dioe Feiertagsprüfung über Web gemacht, da ich nicht nur kirchliche Tage brauchte, ausserdem ists ja in jedem Land verschieden
Bild
Antworten