Werktage / Arbeitstage eines Monats ermitteln

  • Hi,
    angeregt durch eine Fragestellung im H&U-Forum habe ich mal die folgende Funktion erstellt:
    _GetWorkDays($iMon=-1, $iYear=-1, $iRetType=6, $bHoliday=True)


    Für den übergebenen Monat des angegebenen Jahres (-1 jeweils aktueller(s) Monat/Jahr) wird in Abhängigkeit des RetTypes (5=Mo-Fr / 6=Mo-Sa / 7=Mo-So) folgendes ermittelt und in einem 2D-Array zurückgegeben:


    [0][0]= Anzahl Werktage im Monat
    [0][1]= "WeekNr erster Werktag / WeekNr letzter Werktag"


    [1][0]= Datum (Tag) des ersten Werktags
    [1][1]= Wochentag des ersten Werktags (0=Mo bis 6=So)
    [2..UBound-1][0]=weitere Werktage Datum (Tag)
    [2..UBound-1][0]=weitere Werktage Wochentag (0=Mo bis 6=So)


    Edit:
    Habe es nun doch erweitert, sodass die bundeseinheitlichen Feiertage berücksichtigt werden. Der Parameter kann bei Bedarf auf FALSE gesetzt werden.
    Die dazu erstellte Funktion: _IsHoliday($iMon, $iYear, $iDay) läßt sich natürlich auch gut für andere Anwendungen nutzen. Falls Feiertag, wird dessen Name zurückgegeben, anderenfalls ein Leerstring.


  • Wie wäre es denn mit einen 3D-Array?


    [Tag][Wochentag][Feiertag incl. Arbeitstag]
    01.01.2001 = [01012010][Freitag][X]
    02.01.2010 = [02012010[Samstag][]
    03.01.2010 = [03012010][Sonntag][]
    04.01.2010 = [04012010][Montag][]
    usw.



    Aber Deine UDF ist schön gewurden !!!

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?


  • Um ein korrektes Ergebnis mit AutoIt v3.3.6.1 zu bekommen, ist eine Anpassung der UDF notwendig.
    Ich war mal so frei und habe dies direkt eingetragen (rote Markierung) und Zeile 14, 26+28.


    Gruß
    dvmade