Страница: 1 |
Страница: 1 |
Вопрос: Помогите разобраться с фунциями даты
Добавлено: 27.12.05 18:13
Автор вопроса: Stas
Есть такая задача:
"Научный сотрудник забыл точную дату конференции, на которой ему необходимо присутствовать, но помнит, что она должна начаться в четверг в период с 1 по 8 октября 2004 года. Помогите ему определить точную дату начала конференции"
Вот сталкнулся с проблемой следущего рода:сделал цикл, где проверял WeekDay, но VB'ку не нравится такая запись:
"i/10/2004" Вопросик как мне в дату поставить переменную велечину?
Заранее благодарен!
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
вячеслав
Вопросов: 3
Ответов: 14
Профиль | | #1
Добавлено: 27.12.05 18:21
MonthView1.Day = i не получается?
Номер ответа: 2
Автор ответа:
Stas
Вопросов: 1
Ответов: 2
Профиль | | #2
Добавлено: 27.12.05 23:38
Можно немного поподробней?
А что за функция MonthView1.Day?
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 28.12.05 02:16
я так понимаю в переменной i должно быть некое число, чисто в этом ввиде ему и не должно нравится...
Номер ответа: 4
Автор ответа:
вячеслав
Вопросов: 3
Ответов: 14
Профиль | | #4
Добавлено: 28.12.05 10:23
Посмотри тут :http://beginning.ru/libvisualbasic/svisualbasibig/Chapte8/Ch55.htm
Не особо подробно, но...
Номер ответа: 5
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #5
Добавлено: 28.12.05 11:29
>"i/10/2004" Вопросик как мне в дату поставить переменную велечину?
Просто прибавляй i к дате:
weekday(datevalue("1.10.2004" + i)
Номер ответа: 6
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #6
Добавлено: 28.12.05 12:06
Лучше избегать прямого суммирования и неявного преобразования даты - можно напороться на локалю.
Dim i As Long
For i = 1 To 8
If Weekday(DateSerial(2004, 10, i), vbSunday) = vbThursday Then
MsgBox DateSerial(2004, 10, i)
End If
Next i
Номер ответа: 7
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #7
Добавлено: 28.12.05 12:18
Дата у тебя задана как строка? А переменная - как лонг? Тогда попытка вставить в строку лонг - не лучшая мысль. Можно сделать так: дату задавать как положено: As Date.
d = "1.10.2004"
Do While Weekday(d) <> 5
d = d + 1
Loop
MsgBox d
Сравнивается с 5, т.к. четверг - это пятый день недели по-американски (янки думают, что у всех неделя начинается в воскресенье)
Номер ответа: 8
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #8
Добавлено: 28.12.05 12:25
В свете предложенной LamerOnLine поправки на локаль, можно сделать так:
d = DateSerial(2005, 12, 1)
Do While Weekday(d) <> 5
d = d + 1
Loop
MsgBox d
Номер ответа: 9
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #9
Добавлено: 28.12.05 12:29
Ты это о чем? Да, переменная - лонг, но дата не строка. Дата корректно собирается DateSerial.
Или ты это 2Sur?
Номер ответа: 10
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #10
Добавлено: 28.12.05 12:56
Это я отвечал автору, а тут провайдер завис, и ты успел вклиниться, получилось, что как будто тебе отвечал
Номер ответа: 11
Автор ответа:
Stas
Вопросов: 1
Ответов: 2
Профиль | | #11
Добавлено: 28.12.05 20:04
Ребята всем вам большое спасибо! Всё доступно объяснили! С темой этой разобрался! Спасибо!