Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: нужна помощь по работе с датой Добавлено: 20.04.06 16:36  

Автор вопроса:  Сергей | ICQ: 238974223 
Есть дата в формате: Год, Месяц, День. Как ее перевести в дни, то есть какое-то суммарное число дней?
Я знаю есть формула, которая учитывает - високосный год или нет, сколько дней в месяце...
Может кто занимался этим или имеет формулу или как-то иначе решал такую задачу - прошу помочь. Заранее брагодарен всем кто откликнется

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 20.04.06 18:17
Какое-то суммарное число дней с момента чего?
Ибо суммарное число дней имеет смысл в свете двух временных точек как минимум...

Ответить

Номер ответа: 2
Автор ответа:
 Сергей



ICQ: 238974223 

Вопросов: 4
Ответов: 8
 Профиль | | #2 Добавлено: 20.04.06 20:33
начало исчмсления не имеет значения.
Например такой формат: от года "Х" прошло 2 года, 10 месяцев, 13 дней.
Сколько это все (годы, дни, месяцы) будет в днях. Вот такой смысл.

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 20.04.06 20:47
для этих целей используют ф-ю DateDiff

Ответить

Номер ответа: 4
Автор ответа:
 Сергей



ICQ: 238974223 

Вопросов: 4
Ответов: 8
 Профиль | | #4 Добавлено: 20.04.06 20:52
что она делает ? где ее найти можно? есть ли эквивалентная ей математическая запись ?

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 20.04.06 23:33
Это стандартная функция из VB. Единственное, что она делает - возвращает разницу между 2 датами в указанных тобой еденицацах.. Наример от даты "Ч" до настоящего момента.. Возвращает количество лет, месяцев,недель, декад, часов, секунд и т.д... Учитывает высокосный год...
есть ли эквивалентная ей математическая запись?

Боюсь, что врядли.. (имхо)

Ответить

Номер ответа: 6
Автор ответа:
 Страшный Сон



Вопросов: 46
Ответов: 848
 Профиль | | #6 Добавлено: 20.04.06 23:39
В принципе если не лень, можно и самому написать.

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 21.04.06 00:18
тоже вариант.. )

Ответить

Номер ответа: 8
Автор ответа:
 Temak



ICQ: 264-692-095 

Вопросов: 4
Ответов: 24
 Профиль | | #8 Добавлено: 21.04.06 00:49
http://www.vbnet.ru/vbguide/showfunction.asp?id=97

'в данном примере функция DateDiff используется для определения
'числа дней между указанной и текущей датой

Dim TheDate As Date 'объявляет переменные
Dim Msg
TheDate = InputBox("Введите дату:";)
Msg = "Разность (дней): " & DateDiff("д", Now, TheDate)
MsgBox Msg

Ответить

Номер ответа: 9
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #9 Добавлено: 21.04.06 04:36
начало исчмсления не имеет значения.
Например такой формат: от года "Х" прошло 2 года, 10 месяцев, 13 дней

Ты не понимаешь суть переменной Date.

Впрочем, если ты используешь её так, то
msgbox clng(d)

Ответить

Номер ответа: 10
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #10 Добавлено: 21.04.06 04:41
Да, забыл сказать.

Поскольку Date и TimeSpan - вещи принципиально разные, то соответственно твои "2 года 10 месяцев 13 дней" в Date на самом деле означают не промежуток, а точку, причём из-за тех самых високосных годов и т.п. ты будешь неизбежно получать вылезающие/пропадающие дни.


Далее, вернёмся всё-таки к фразе "начало исчмсления не имеет значения". Неужели? То есть, 2 года от 1 января високосного года содержат то же количество дней, что и два года от 1 января невисокосного года? Или, два месяца от 1 февраля содержат столько же дней, сколько два месяца от 1 июля?

Всё же стоит вернуться к осознанию этого факта. И выбрать две точки на оси времени. После чего сделать msgbox(d1-d2) и получить разницу в днях.

Ответить

Номер ответа: 11
Автор ответа:
 Сергей



ICQ: 238974223 

Вопросов: 4
Ответов: 8
 Профиль | | #11 Добавлено: 21.04.06 10:11
Думаю надо пояснить момент связанный с моей фразой "Дата не имеет значения", а то много вопросов в связи с этим появилось.
Я имел в виду что дата точки начала отсчета может быть любой и ее величина может быть взята какая угодно. Например дата смерти любимого хомяка 12 января 1997 года. Или там еще какая-то дата.
Те 20 дней 10 месяцев и 5 лет от даты "Х" заданы в виде простых цифр, то есть это 3 переменных,а не одна типа Date. В общем то я расчитывал на математические решения этой задачи.
А теперь смотрю есть и функции для этого. Прекрасно.
Спасибо всем за помощь.

Ответить

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



Вопросов: 0
Ответов: 1876


 Профиль | | #12 Добавлено: 21.04.06 12:45
Функция.
Одна.
Причём не та, что была озвучена.

msgbox dateadd("d", 20, dateadd("m", 10, dateadd("yyyy", 5, StartDate)))

Ответить

Номер ответа: 13
Автор ответа:
 Сергей



ICQ: 238974223 

Вопросов: 4
Ответов: 8
 Профиль | | #13 Добавлено: 21.04.06 14:20
Пригодилась и dateAdd() и Datediff(). Все прекрасно работает... вот что значит с профессиональными знающими людьми поговорить. Не знал до этого про эти функции (наверно потому что не нужны были :-))

Ответить

Страница: 1 |

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



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