Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
28:03:2008, 22:26
|
|
Гуру ![]() ![]() ![]() Группа: Lotus team Сообщений: 394 Регистрация: 14:09:2006 Из: Караганды =) Пользователь №: 6 548 Специализация: Lotus Notes & Domino Репутация: 10
|
Пишу некое подобие органайзера, нужно складывать/вычитать/сравнивать даты и время, сколько помню, лучше всего это делать в числовом формате(преобразовывать дату/время в число с плавающей точкой, где целая часть это дата, а дробная время, если я правильно понимаю). Столкнулся с непонятными результатами:
Код MsgBox CDate(CDbl(CDate("00:02:00")) + (CDbl(CDate("23:59:00")) + CDbl(CDate("01.01.1000")))) возвращает 03.01.1000 23:59:00 , а Код MsgBox CDate(CDbl(CDate("00:00:00")) + (CDbl(CDate("23:59:00")) + CDbl(CDate("01.01.1000")))) возвращает 02.01.1000 0:01:00 ,хотя Код MsgBox CDate(CDbl(CDate("00:01:00")) + (CDbl(CDate("23:59:00")) + CDbl(CDate("01.01.1000")))) получается 02.01.1000 почему так происходит? может существует другой, более простой способ решения этих задач? платформа VB6 |
|
Сообщение
#1
|
|
![]() |
|
|
29:03:2008, 10:03
|
|
Гуру ![]() ![]() ![]() Группа: Lotus team Сообщений: 394 Регистрация: 14:09:2006 Из: Караганды =) Пользователь №: 6 548 Специализация: Lotus Notes & Domino Репутация: 10
|
Дата - это число, целая часть которого - число полных суток, прошедших с 0:00 30.12.1899 (так - "1" соответствует 31.12.1899), дробная часть показывает время в частях от суток (т. е. 0,5 = 12 часов, 1/24/60/60=1 секунда).
Примеры с датой позже 1899 г работают корректно: Код MsgBox CDate(CDbl(CDate("00:02:00")) + (CDbl(CDate("23:59:00")) + CDbl(CDate("01.01.2000")))) возвращает 02.01.2000 0:01:00 |
|
Сообщение
#2
|
|
|
|
4:05:2008, 04:55
|
|
Новенький ![]() Группа: Программист Сообщений: 29 Регистрация: 1:10:2007 Пользователь №: 12 985 Специализация: программист Репутация: 0
|
в VB от даты можно отнимать и прибавлять и сравнивать и так без доп. преобразований
|
|
Сообщение
#3
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 04:42 |