Visual Basic - Días de una semana

Life is soft - evento anual de software empresarial
 
Vista:

Días de una semana

Publicado por Alex (3 intervenciones) el 21/11/2007 12:07:12
Buenas,
Necesito una función que pasandola como parametro una semana (y un año) me devuelva el primer día de esa semana (y si se puede el último también)

Ejemplo: Si le paso la semana 35 me devuelva 27/8/2007 (y si es posible del 27/8/2007 al 2/9/2007).

Un saludo y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Días de una semana

Publicado por Alex (3 intervenciones) el 21/11/2007 12:08:55
P.D.: Estoy programando en Visual Basic (Script).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Días de una semana

Publicado por Richard Montero (25 intervenciones) el 21/11/2007 22:48:23
Alex:

Podés hacerlo de la siguietne manera:

escribí las sigiuentes dos funciones:

Al enviarle como parámetros la semana y el año, te devuelve las fechas correspondientes.

Function PrimerDiaSemana(Semana, Año) as Date
Dim miFec As Date
miFec = DateAdd("ww", Semana - 1, DateSerial(Año, 1, 1))
PrimerDiaSemana = DateAdd("d", -VBA.Weekday(miFec, vbMonday) + 1, miFec)
End Function

Function UltimoDiaSemana(Semana, Año) as Date
Dim miFec As Date
miFec = DateAdd("ww", Semana - 1, DateSerial(Año, 1, 1))
UltimoDiaSemana = DateAdd("d", 7 - VBA.Weekday(miFec, vbMonday), miFec)
End Function

Saludos,

Richard
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Días de una semana

Publicado por Alex (3 intervenciones) el 22/11/2007 10:25:28
Muchas gracias Richard, era justo lo que necesitaba
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

NO FUNCIONA!!

Publicado por pablo (19 intervenciones) el 22/11/2007 12:11:53
pon semana 1 del año 2006

y dice del 26/12/2005 - 01/01/2006

cuando debería ser 02/01/2006 - 08/01/2006

-------------------------------------------
Function BuscaDiaSemana(iSemana As Integer, iAño As Integer) As Date
Dim dFecha As Date
' empezamos por el primer día del año indicado
dFecha = "01/01/" & CStr(iAño)
Do
If DatePart("ww", dFecha, vbMonday, vbFirstFourDays) = iSemana Then
If iSemana = 1 Then
' si es la primera semana del año y el día diferente de lunes
' le añadimos o restamos los días de diferencia
If DatePart("w", dFecha) <> 2 Then
dFecha = DateAdd("d", -(DatePart("w", dFecha) - 2), dFecha)
End If
End If
BuscaDiaSemana = dFecha
Exit Function
End If
' sumamos un dia a la fecha
dFecha = DateAdd("d", 1, dFecha)
Loop
End Function

Esta función devuelve el primer día de la semana indicada, para saber el último le sumas 6
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:NO FUNCIONA!!

Publicado por Richard Montero (25 intervenciones) el 24/11/2007 20:29:00
Pablo y christian:

El caso del año 2006, por coincidencia el 1 día del año está en la última semana del año 2006, por lo tanto, la rutina toma como primer día de la semana el 26-Dic-2006.

Saludos,

Richard
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar