reporting services - services - Cómo calcular el último día hábil del mes en VBScript
round reporting services (4)
¿Cómo calculo el último día hábil del mes en VBScript? Es para un informe de Reporting Services.
Gracias
Aquí hay un buen artículo de CodeProject: Trabajar con fechas comerciales (feriados / fines de semana de negocios, etc.) .
Este proyecto tiene como objetivo aliviar los problemas para determinar fechas de negocios válidas. Incluye algunas funciones que he creado para determinar si la fecha es festiva o de fin de semana, y también para recuperar el día hábil siguiente o el último. También hay una función para encontrar el último día de un mes determinado.
Function LastBusinessDay(sDate)
Dim iDay, iDaysToAdd, iDate
iDaysToAdd = 0
iDate = sDate
x = 1
Do while iDaysToAdd >= 0
If Weekday(iDate) = 1 or Weekday(iDate) = 7 or _
isHoliday(iDate) <> 0 then
iDay = Weekday(iDate)
Select Case cint(iDay)
Case 1 ''Sunday
iDate = DateAdd("d", -1, iDate)
Case 7 ''Saturday
iDate = DateAdd("d", -1, iDate)
Case else ''this is a valid day
if isHoliday(iDate) > 0 then
iDate = dateadd("d", -(isHoliday(iDate)), iDate)
else
iDaysToAdd = iDaysToAdd - 1
end if
End Select
end if
Loop
LastBusinessDay = iDate
End Function
PD: Encontrarás las funciones LastDayOfMonth
y isHoliday
en el artículo.
Qué tal si:
intMonth=11
''Use zero to return last day of previous month ''
LastDayOfMonth= dateserial(2008,intMonth+1,0)
''Saturday ''
If WeekDay(LastDayOfMonth,1)=7 Then LastDayOfMonth=LastDayOfMonth-1
''Sunday ''
If WeekDay(LastDayOfMonth,1)=1 Then LastDayOfMonth=LastDayOfMonth-2
Msgbox LastDayOfMonth & " " & Weekdayname(Weekday(LastDayOfMonth,1),1)
Si se refiere al último día de la semana del mes (MF), intente:
Dim d
d = DateAdd("m", 1, Now)
d = Month(d) & "/1/" & Year(d)
d = DateAdd("d", -1, d)
If Weekday(d) = 7 Then
d = DateAdd("d", -1, d)
ElseIf Weekday(d) = 1 Then
d = DateAdd("d", -2, d)
End If
MsgBox d
Aquí hay una solución para cualquiera que esté buscando obtener el último día hábil del mes anterior.
Dim lastbusinessdayofprevmonth
Sub GetLastDay()
Dim curdate
curdate = Date()
Dim firstdayofcurmonth
firstdayofcurmonth = Month(curdate) & "/1/" & Year(curdate)
Dim lastdayofprevmonth
lastdayofprevmonth = DateAdd("d", -1, firstdayofcurmonth)
Dim day
day = weekday(lastdayofprevmonth)
if(day = 1) then
lastbusinessdayofprevmonth = DateAdd("d", -2, lastdayofprevmonth)
elseif (day = 7) then
lastbusinessdayofprevmonth = DateAdd("d", -1, lastdayofprevmonth)
else
lastbusinessdayofprevmonth = lastdayofprevmonth
end if
end sub