Найти это недели понедельник - PullRequest
5 голосов
/ 16 января 2012

Как мне узнать дату понедельника текущей недели.Где понедельник - первый день недели.Поэтому, если бы я посмотрел на этой неделе, он вернул бы дату 1/16/2012

Я использую VBScript и ASP

Заранее большое спасибо ..

Пол

Ответы [ 4 ]

11 голосов
/ 16 января 2012

Эффективно, функция Weekday возвращает Sunday = 1, Monday = 2 и т. Д. Чтобы получить понедельник той же недели, вы хотите вычесть:

Sunday (1): 6 days
Monday (2): 0 days
Tuesday(3): 1 day
...
Saturday(7): 5 days.

Или Days вычесть = (Weekday -2 + 7) Мод 7

Таким образом, если d является датой, понедельник той же недели можно записать в виде:

mondayofsameweek = DateAdd("d", -((Weekday(d) + 7 - 2) Mod 7), d)
1 голос
/ 16 января 2012

В VBScript WeekDay возвращает день недели, начиная с воскресенья = 1 (VBScript может быть таким странным). Так что просто вычтите два (понедельник = 2) из ​​этого значения и вызовите DateAdd.

monday = DateAdd("d",(WeekDay(Date())-2),Date())
0 голосов
/ 20 марта 2018

Я знаю, что тема немного устарела, но я решила поделиться своим рабочим решением, которое я считаю более кратким.Где dDate - ваша текущая дата:

dDate = DateAdd("d", -(WeekDay(dDate, vbMonday) - 1), dDate)

Второй параметр WeekDay - это день, когда вы хотите, чтобы неделя начала.Для меня в США WeekDay соответствует второму параметру по умолчанию vbSunday.Указывая vbMonday, мы просто получаем разницу (основание 1) между нашим текущим днем ​​недели и понедельником.Вычтите 1 и добавьте обратное значение к вашей текущей дате, чтобы получить ваш результат.

Пример:

WeekDay(2018-03-20, vbMonday) = -((2) - 1) = DateAdd("d", -1, 2018-03-20)
0 голосов
/ 16 января 2012

VBScript имеет функцию с именем WeekDay, он возвращает 1 - 7, но не уверен, что 1 - понедельник, но обычно с этим можно работать.

В любом случае, получить день недели в четверг = 4? так что тогда вам просто нужно взять три дня от даты с помощью функции DateAdd

...