Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/01/2009, 06:22
Avellaneda
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Restarle dias a una fecha sin tener encuenta sabados ni domingos

Cita:
Iniciado por jafl318 Ver Mensaje
Hola,

tengo una fecha dada a la cual se le resta determinado numero de dias hasta ahi todo bien, pero el problema es que necesito que le reste y que no tenga encuenta ni los sabado ni domingos.

ejem 01/01/2009 - 4 normalmente daria 28/12/2008

como lo necesito es 01/01/2009 - 4 daria 27/12/2008 ya que el 28 es un domingo

alguien sabe?
Hola,
en tu ejemplo creo que debería dar 26/12/2008 ya que el 27 es sábado y tampoco lo quieres.

Bueno, mira si te vale este ejemplo:

Código:
Function FechaSinFestivos(ByVal LaFecha As Date, iDias As Integer) As Date
Dim i As Integer, d As Date, n As Long
d = LaFecha
For i = 1 To iDias + 1
    ' si el día de la semana es sábado o domingo, incrementamos el contador 'n'
    If DatePart("w", d) = 7 Or DatePart("w", d) = 1 Then n = n + 1
    ' restamos un día a la fecha
    d = d - 1
Next i
' incrementamos a la variable 'iDias' los sábados y domingos entre las fechas
iDias = iDias + n + 1
' restamos a la fecha los dias indicados + los sábados y domingos
d = LaFecha - iDias
' si la fecha resultante cae en sábado o domingo, restamos (1 día si es sábado, 2 si es domingo)
If DatePart("w", d) = 7 Then
    d = d - 1
ElseIf DatePart("w", d) = 1 Then
    d = d - 2
End If
' retornamos la fecha resultante
FechaSinFestivos = d
End Function
Nota: No he probado la función a fondo, pero creo que puede funcionar.