• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Обработка даты и времени

  • Автор темы Автор темы fvoice
  • Дата начала Дата начала
F

fvoice

Пишу некое подобие органайзера, нужно складывать/вычитать/сравнивать даты и время, сколько помню, лучше всего это делать в числовом формате(преобразовывать дату/время в число с плавающей точкой, где целая часть это дата, а дробная время, если я правильно понимаю). Столкнулся с непонятными результатами:
Код:
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
 
Дата - это число, целая часть которого - число полных суток, прошедших с 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
 
в VB от даты можно отнимать и прибавлять и сравнивать и так без доп. преобразований
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab