Страница: 1 | 2 |
Вопрос: день недели
Добавлено: 30.11.05 12:03
Автор вопроса: 050 | ICQ: 346913660
Прощу подсказать как в vb получить
дату выбранного дня недели (например, пятницы)?
Спасибо.
Ответы
Всего ответов: 19
Номер ответа: 1
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #1
Добавлено: 30.11.05 12:25
Очевидно, Weekday и vbFriday.
Номер ответа: 2
Автор ответа:
050
ICQ: 346913660
Вопросов: 2
Ответов: 9
Профиль | | #2
Добавлено: 30.11.05 12:53
vbFriday - возвращает 6
Weekday - должна возвращать номер недели с начала года?
у меня почему-то ничего не вернула?
а в примере можно показать?
т.е. что нужно вставить format(,"\dd/\mm/\yy/"
??
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 30.11.05 13:45
Например пятниц в году больше одной. Поэтому надо ещё решить, как будем уточнять, какую пятницу.
Какую пятницу?
Номер ответа: 4
Автор ответа:
050
ICQ: 346913660
Вопросов: 2
Ответов: 9
Профиль | | #4
Добавлено: 30.11.05 14:06
текущей недели...
а если суббота то следующей
Номер ответа: 5
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #5
Добавлено: 30.11.05 14:31
vbFriday - это константа для пятницы
Weekday возвращает номер дня недели по дате.
Сравнивай текущий день недели с требуемым, соответсвенно суммируй дату.
Номер ответа: 6
Автор ответа:
050
ICQ: 346913660
Вопросов: 2
Ответов: 9
Профиль | | #6
Добавлено: 30.11.05 14:37
Хорошо, пробую...
а как прибавлять дни к дате текущей, т.е.
Dim d, dd, dn, don, doff As Date
dd = Format(Now, "dd.mm.yy"
dn = Weekday(dd)
don = Format(Now, "dd.mm.yy"
'don = dd
If dn = 4 Then
don = Format(dd, "dd.mm.yy" + 2
don = Format(don, "dd.mm.yy"
'(d, 2, d)
End If
MsgBox "" & don
вот там где + 2 - Не работает
Номер ответа: 7
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #7
Добавлено: 30.11.05 15:02
Date - Weekday(Date) + vbFriday
Номер ответа: 8
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #8
Добавлено: 01.12.05 12:59
>а как прибавлять дни к дате текущей
DatePart("w", (DateAdd("d", 3, Now)))
прибавит 3 дня к текущей дате + выдаст полученный день недели числом.
Номер ответа: 9
Автор ответа:
050
ICQ: 346913660
Вопросов: 2
Ответов: 9
Профиль | | #9
Добавлено: 01.12.05 17:35
Спасибо!
я сделал так, это оптимальный вариант?
Dim d, dn, don, doff As Date
d = Format(Now, "dd.mm.yy"
dn = Weekday(d)
Select Case True
Case dn = 1: don = DateAdd("d", 5, d)
Case dn = 2: don = DateAdd("d", 4, d)
Case dn = 3: don = DateAdd("d", 3, d)
Case dn = 4: don = DateAdd("d", 2, d)
Case dn = 5: don = DateAdd("d", 1, d)
Case dn = 6: don = DateAdd("d", 0, d)
Case dn = 7: don = DateAdd("d", 6, d)
End Select
don = Format(don, "dd.mm.yy"
Номер ответа: 10
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #10
Добавлено: 01.12.05 18:02
Нет.
Оптимальный вариант приведён в ответе № 7.
Почему-то после приведения оптимального варианта обязательно кто-нибудь предложит бяку, причём в итоге именно бяку утвердят...
Номер ответа: 11
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #11
Добавлено: 02.12.05 11:08
Блииин, ну как там можно? doff as Date, остальные - Variant. Завязывай с подобным ламерством!
Номер ответа: 12
Автор ответа:
050
ICQ: 346913660
Вопросов: 2
Ответов: 9
Профиль | | #12
Добавлено: 02.12.05 13:41
..ну а чего здесь не так?
какие variant?
все переменные объявлены и он date...
Номер ответа: 13
Автор ответа:
050
ICQ: 346913660
Вопросов: 2
Ответов: 9
Профиль | | #13
Добавлено: 02.12.05 13:45
Date - Weekday(Date) + vbFriday
astoro
..не мог бы ты пояснить свою строку..
Номер ответа: 14
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #14
Добавлено: 02.12.05 14:34
050 wrote
..ну а чего здесь не так?
какие variant?
все переменные объявлены и он date...
Если ты объявляешь переменные так:
dim a, b as date
переменная b будет типа Date, а переменная a типа Variant (все не объявленные явно переменные имеют такой тип)
в твоем случае нужно писать
Dim d as date, dn as date, don as date, doff As Date
по строке поясняю:
Function GetWeekDayDate(ByVal D As Date, ByVal WD As Integer) As Date
'D - дата (из той недели, которой эта дата принадлежит мы найдем дату другого дня недели)
'WD - требуемый день недели
'vbSunday 1 Sunday
'vbMonday 2 Monday
'vbTuesday 3 Tuesday
'vbWednesday 4 Wednesday
'vbThursday 5 Thursday
'vbFriday 6 Friday
'vbSaturday 7 Saturday
GetWeekDayDate = D - Weekday(D) + WD
End Function
Private Sub Command1_Click()
Dim MyDate As Date
MyDate = "01.01.06"
MsgBox GetWeekDayDate(MyDate, vbFriday)
End Sub
Следующий вопрос будет о том, как узнать дату дня недели следующей недели, если суббота?
Оставлю ответ на него, чтоб звезд заработать..... или все таки подумаем?
Номер ответа: 15
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #15
Добавлено: 02.12.05 14:38
Как Date объявлена только doff. Остальные - Variant
Чтож там непонятного?
Из текущей даты вычитает номер дня недели и прибавляет номер нужного дня.
К примеру:
Date - Weekday(Date)
2.12.2005 - 6 = 26.11.2005
+ vbFriday
+6 = 2.12.2005
Дата пятницы.
Немного ненаглядно потому что сегодня и есть пятница и ты получишь то от чего ушел
Скажем
MsgBox Date - Weekday(Date) + vbMonday
дата прошедшего вторника. Теперь понятно?
Вопрос то простейший.