аккуратный способ получить дату последней пятницы - PullRequest
6 голосов
/ 19 января 2010

независимо от того, в какой день я вызываю функцию.

Я знаю, что могу написать оператор выбора дня недели (сейчас), просто интересно, есть ли более аккуратный путь?

Ответы [ 4 ]

11 голосов
/ 19 января 2010

Помогает ли это вам начать? Я просто быстро его проверил и, похоже, работал нормально.

Private Sub LastFriday()

    Dim iWeekday As Integer, LastFridayDate As Date

    iWeekday = Weekday(Now(), vbFriday)

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

End Sub
4 голосов
/ 19 января 2010

DateAdd ("d", -1 - день недели (сейчас), сейчас)

0 голосов
/ 17 апреля 2015

Эта функция будет искать каждую пятницу за последний месяц. Вы можете изменить ее в соответствии с другими днями, такими как понедельник "oldDay = 2" и т. Д. Метод будет работать с сегодняшней даты, но вы можете изменить это в соответствии с

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

    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)
0 голосов
/ 19 января 2010
DatePart('dddd', now)

или

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

... с явной датой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...