Search code examples
vbscriptasp-classicdate-arithmetic

Get last Friday and Get next Thursday


I created a code to get the last friday, but it will only work if today is already the next week.

        iWeekday = Weekday(Now(), vbFriday)
        LastFridayDate = Now - (iWeekday - 1)

I need a code to get the last friday based on today's date, and get the next thursday.

Thanks in advance.


Solution

  • You mean on a Friday you want the date of Friday the previous week? For that you simply need to base iWeekday on Saturdays.

    LastFridayDate = Date - Weekday(Date, vbSaturday)
    

    For calculating next Thursday you need to subtract the weekday number based on Thursday from 8 and add that to the current date:

    NextThursdayDate = Date + 8 - Weekday(Date, vbThursday)
    

    Demonstration:

    >>> For i = 0 to 8 : _
      d1 = Date + i : _
      d2 = d1 - Weekday(d1, vbSaturday) : _
      WScript.Echo WeekdayName(Weekday(d1), True) & ", " & d1 & "  ->  " _
        & Weekdayname(Weekday(d2), True) & ", " & d2 : _
    Next
    Do, 27.02.2014  ->  Fr, 21.02.2014
    Fr, 28.02.2014  ->  Fr, 21.02.2014
    Sa, 01.03.2014  ->  Fr, 28.02.2014
    So, 02.03.2014  ->  Fr, 28.02.2014
    Mo, 03.03.2014  ->  Fr, 28.02.2014
    Di, 04.03.2014  ->  Fr, 28.02.2014
    Mi, 05.03.2014  ->  Fr, 28.02.2014
    Do, 06.03.2014  ->  Fr, 28.02.2014
    Fr, 07.03.2014  ->  Fr, 28.02.2014
    >>> For i = 0 to 8 : _
      d1 = Date + i : _
      d2 = d1 + 8 - Weekday(d1, vbThursday) : _
      WScript.Echo WeekdayName(Weekday(d1), True) & ", " & d1 & "  ->  " _
        & Weekdayname(Weekday(d2), True) & ", " & d2 : _
    Next
    Do, 27.02.2014  ->  Do, 06.03.2014
    Fr, 28.02.2014  ->  Do, 06.03.2014
    Sa, 01.03.2014  ->  Do, 06.03.2014
    So, 02.03.2014  ->  Do, 06.03.2014
    Mo, 03.03.2014  ->  Do, 06.03.2014
    Di, 04.03.2014  ->  Do, 06.03.2014
    Mi, 05.03.2014  ->  Do, 06.03.2014
    Do, 06.03.2014  ->  Do, 13.03.2014
    Fr, 07.03.2014  ->  Do, 13.03.2014