Rubrik: Datum/Zeit und Timer · Datums- und Zeit-Funktionen | VB-Versionen: VB2005, VB2008, VB2010 | 18.04.11 |
Netto-Arbeitstage einer angegebenen Zeitspanne ermitteln Ermittelt für zwei angegegebene Daten die Anzahl der dazwischen liegenden Arbeitstage. | ||
Autor: Dieter Otter | Bewertung: | Views: 16.963 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Nachfolgende Funktion liefert die Anzahl der Arbeitstage (Mo - Fr), die zwischen dem angegebenen Start-Datum und End-Datum liegen.
Auf diese Weise lassen sich bspw. schnell die Netto-Arbeitstage eines Monats ermitteln - wie gesagt, jedoch ohne Berücksichtigung von Feiertagen!
''' <summary> ''' Ermittelt die Netto-Arbeitstage des angegebenen Zeitraums ''' </summary> ''' <param name="DateStart">Startdatum</param> ''' <param name="DateEnd">Enddatum</param> ''' <returns>Nettoarbeitstage ohne Feiertagsberücksichtigung</returns> Public Function WorkingDays(ByVal DateStart As Date, ByVal DateEnd As Date) As Integer ' Zeit-Differenz in Tagen Dim Days As Integer = DateEnd.Subtract(DateStart).Days + 1 Dim DaysWeekend As Integer = 0 ' Anzahl Wochenend-Tage ermitteln For i As Integer = 0 To Days - 1 Select Case DateStart.AddDays(i).DayOfWeek Case DayOfWeek.Saturday, DayOfWeek.Sunday DaysWeekend += 1 End Select Next ' Arbeitstage = Anzahl Tage - Wochenend-Tage Return Days - DaysWeekend End Function
Aufrufbeispiel:
Sie möchten wissen, wieviele Arbeitstage der Monat April hat.
Dim DateStart As New Date(Now.Year, 4, 1) Dim DateEnd As Date = DateStart.AddMonths(1).AddDays(-1) MsgBox("Arbeitstage im April: " & WorkingDays(DateStart, DateEnd))