Вверх ↑
Разработчик
Ответов: 26151
Рейтинг: 2127
#1: 2007-05-26 14:54:16 ЛС | профиль | цитата
Galkov писал(а):
А что, Date2StrFmt(Time2StrFmt(_prop_Format, DateTime), DateTime) - не срабатывает

Нет, не срабатывает -- отсекает время и впихивает вместо него кусок от формата -- например, HH:mm. Это конечно можно попытаться сделать, но надо подумать. Самый простой вариант сшить по отличию символов.
Galkov писал(а):
Дык ничего военного вроде: прибавил константу, умножил на константу, округлил.

Точный алгоритм преобразования DateTime в VCLDate, можно? Я проверил 693594 выдает 30.12.1899, почему не 693595? И куда девать дробную часть, вообще непонятно, отсекать, считая, что новый день еще не начался, округлять, тогда до какого знака. Какая точность у VCLDate, до чего -- дней, часов, минут, секунд, миллисекунд. Проще говоря -- на что надо умножить после вычитания константы, и какая, всеже, точно константа?

[size=-2]------ Добавлено в 14:54
Я тут посмотрел, но не согласен вот с этим
Кладов писал(а):
Если же кому-то нужна совместимость с SysUtils.TDatetime, то для преобразования из KOL'овской даты в VCL'евскую достаточно прибавить константу VCLDate0 (равную 693 594, т.е. числу дней от января 1 года до 31 декабря 1899 года), а для обратного преобразования - вычесть эту же константу.
Если отсчет в SysUtils от 31 декабря 1899 года, то эта дата там должна быть равна 0, а значит, надо не прибавлять а отнимать значение константы, так как наша дата заведомо больше по значению. И значение это типа Real, а не Integer и умножать ни что не надо.
карма: 22

0