Die
WerkTage - Funktion erwartet Start- und End-Datum und gibt ein Array zurück, das alle Werktage enthält. Optional kann man im
ft""-""Parameter ein Array der bekannten Feiertage übergeben, die dann auch noch aus dem Rückgabe-Array entfernt werden. Hat man keine Feiertage, übergibt man ein leeres Array (
Array()).
Für einen schnellen Test auf Feiertage - auch bei grosser Anzahl an Feiertagen und langen Intervallen - wird ein Dictionary verwendet
<%
start = DateSerial(2004,5,27)
ende = DateSerial(2004,6,7)
feiertage = Array(DateSerial(2004,5,31))
wt = WerkTage(start, ende, feiertage)
for each tag in wt
Response.Write tag & "<br>" & vbCrLf
next
function WerkTage(start, ende, ft)
dim a() : dim i, c, wd, d
set d = Server.CreateObject("Scripting.Dictionary")
for each i in ft
d(CDate(i)) = 1
next
c = 0
for i = CDate(start) to CDate(ende)
wd = weekday(i)
if not (wd=vbSaturday or wd=vbSunday or d.Exists(i)) then
redim preserve a(c)
a(c) = i
c = c + 1
end if
next
WerkTage = a
end function
%>