2010-01-19 11 views
5

sin importar el día que llamo a la función.manera ordenada de obtener la fecha del último viernes

Sé que podría escribir un caso seleccionado de día de la semana (ahora), me preguntaba si había una manera más ordenada de hacerlo.

+2

pregunta interesante. Inicialmente pensé que decía: "Manera ordenada de obtener la FECHA del último viernes", como cuando salías con una chica. – Phil

Respuesta

7

¿Este para que empiece? Acabo de hacer una prueba rápida y parecía funcionar bien.

Private Sub LastFriday() 

    Dim iWeekday As Integer, LastFridayDate As Date 

    iWeekday = Weekday(Now(), vbFriday) 

    LastFridayDate = Format(Now - (iWeekday - 1), "dd-mmm-yy") 

End Sub 
+1

+1 ¿Qué tal solo Formato (Fecha- (día de la semana (fecha, vbFriday) -1), "dd-mmm-yy") – THEn

+0

@THEn - Buen lugar - eso funcionará y hace que el código sea más breve. Supongo que es solo una cuestión de estilo. –

0
DatePart('dddd', now) 

o

DatePart('dddd', #1/1/2010#) 

... con una fecha explícita.

4

DateAdd ("d", -1 - Día de la semana (ahora), ahora)

0

Esta función encontrará todos los viernes para el último mes, usted puede cambiar para adaptarlo a otros días como el Lunes "oldDay = 2", etc el método funcionará a partir de hoy, pero se puede cambiar eso para que se adapte

Dim todaysDate Como Fecha = Date.Today Dim oldDay As Integer Dim thisWeek Como Fecha

Dim firstWeek As Date 
    Dim secondWeek As Date 
    Dim thirdWeek As Date 
    Dim fourthWeek As Date 


    ''finds the Friday of the end of the current week 
    ''No mattter what day you are working 
    Dim daycount As Integer 

    oldDay = Weekday(todaysDate) 
    thisWeek = todaysDate 

    If oldDay < 6 Then 
     daycount = 6 - oldDay 
     thisWeek = thisWeek.AddDays(+daycount) 
    ElseIf oldDay > 6 Then 
     daycount = oldDay - 6 
     thisWeek = thisWeek.AddDays(-daycount) 
    End If 


    firstWeek = thisWeek 
    secondWeek = thisWeek 
    thirdWeek = thisWeek 
    fourthWeek = thisWeek 

    fourthWeek = firstWeek.AddDays(-28) 
    thirdWeek = thirdWeek.AddDays(-21) 
    secondWeek = secondWeek.AddDays(-14) 
    firstWeek = firstWeek.AddDays(-7) 
Cuestiones relacionadas