Вверх ↑
Ответов: 4622
Рейтинг: 746
#1: 2015-03-20 14:33:07 ЛС | профиль | цитата
Предлагаю следующее:
Слева оригинал, справа модификация
1) При конвертировании из строки в VCL и Unix проверяется дата, если равна 0, то в результирующей дате тоже будет 0. Нюанс - дата 01.01.0001 будет представлена 0-вой датой для соответствующего формата (точнее 00.01.0001). Для Unix - не имеет значения, все равно выходит за диапазон, для VCL - дата 01.01.0001 будет представлена как 30.12.1899.
Время будет показано правильно.
Назначение - правильно конвертировать время из строки в соответствующий тип.
2) При конвертировании из строки в Unix проверяется выход за минимальный диапазон. В оригинале происходило двоичное усечение, что приводило к непредсказуемым результатам. В модификации в результате получается минимальная дата Unix. Время тоже затрагивается.
3) При конвертировании из любой даты в строку если дата меньше 01.01.1601, дата стает равной 01.01.1601, время не затрагивается. Все равно, чтобы сконвертировать в строку такие даты, нужно было бы вручную добавлять порцию даты (случай в данной теме).

dateconvertor mod 2013-03-20.7z
карма: 26

0