Вверх ↑
Ответов: 4622
Рейтинг: 746
#1: 2015-03-21 22:36:42 ЛС | профиль | цитата
Tad, а мне то зачем? Я и так это знаю. Ты мне лучше скажи, почему строковая дата 01-01-0001 00:00:00 после StrFmtToDateReal представляется числом 1.0, а не 0.0? Ведь с 01-01-0001 00:00:00 до 01-01-0001 23:59:59 прошло 0 дней.
И раз уж затронули тему, то
Tad писал(а):
не получишь 24:00:00, а получишь 00:00:00
При таком суммировании получается именно то, что должно. Всё зависит от того, как нужно отобразить результат. 24:00:00 - в твоем примере это не время суток, а суммарный временной интервал в часах. А в наших форматах даты это количество часов "от 0-вой даты". Чтобы отобразить интервал в часах, достаточно всё ту же сумму умножить на 24. И при потребности отформатировать в HH:mm:ss можно простой арифметикой. Наш компонент просто показывает именно как время суток.
Моя модификация касалась трех аспектов:
1) Правильное StrFmtToVCL, StrFmtToUnix строки с 0-ой частью даты
2) Правильное отображение хотя бы часов в результате xxxToStrFmt при 0-ой дате (точнее, меньше 01-01-1601)
3) Более понятное поведение StrFmtToDateUnix при датах, меньших 13.02.1901 20:45:52 (забыл добавить то же при конвертации из остальных xxxToDateUnix)
карма: 26

0