Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: sur.hotbox.ru/
 Профиль | | #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
Dim d, dn, don, doff As Date

Блииин, ну как там можно? doff as Date, остальные - Variant. Завязывай с подобным ламерством!

Ответить

Номер ответа: 12
Автор ответа:
 050



ICQ: 346913660 

Вопросов: 2
Ответов: 9
 Профиль | | #12 Добавлено: 02.12.05 13:41
Блииин, ну как там можно? doff as Date, остальные - Variant. Завязывай с подобным ламерством!


..ну а чего здесь не так?
какие 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

Как Date объявлена только doff. Остальные - Variant
не мог бы ты пояснить свою строку

Чтож там непонятного?
Из текущей даты вычитает номер дня недели и прибавляет номер нужного дня.
К примеру:
Date - Weekday(Date)
2.12.2005 - 6 = 26.11.2005
+ vbFriday
+6 = 2.12.2005
Дата пятницы.
Немного ненаглядно потому что сегодня и есть пятница и ты получишь то от чего ушел :)
Скажем

MsgBox Date - Weekday(Date) + vbMonday

дата прошедшего вторника. Теперь понятно?
Вопрос то простейший.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам