Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
ВнизTDatetime. Найти похожие ветки
← →
SergP (2003-11-12 09:33) [0]Есть ли в Дельфи встроенные функции или процедуры для того чтобы:
1. Узнать разницу между двумя TDateTime выраженную в кол-ву секунд.
2. Добавить к TDatetime некоторое кол-во секунд (из integer)?
← →
Романов Р.В. (2003-11-12 09:39) [1]TDateTime type
Most VCL objects represent date and time values using the TDateTime type. The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of a TDateTime value is fraction of a 24 hour day that has elapsed.
Делай выводы
← →
MBo (2003-11-12 09:39) [2]Нет желания посмотреть в хелпе описание сущности типа TDateTime?
А если количество секунд в сутках не сумеешь подсчитать, то АП является хранителем этого секрета.
← →
ЮЮ (2003-11-12 09:42) [3]если эти DateTime получены как Now() в ходе работы приложения, то следует обратить внимание на GetTickCount, на которую и перевод часов во время работы не скажется
← →
Anatoly Podgoretsky (2003-11-12 09:52) [4]MBo © (12.11.03 09:39) [2]
Я его сразу продаю - в сутках 86400 секунд
← →
AntonVS (2003-11-12 10:01) [5]DateTimeToTimeStamp(DateTime: TDateTime)
type TTimeStamp = record
Time: Integer; {кол-во миллисекунд после 12 часов}
Date: Integer; {кол-во дней после 1.1.0001}
end;
TimeStampToMSecs(const TimeStamp: TTimeStamp): Comp; - общее кол-во миллисек.
← →
AntonVS (2003-11-12 10:08) [6]по-поводу второго:
procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);
function EncodeDate(Year, Month, Day: Word): TDateTime;
← →
Anatoly Podgoretsky (2003-11-12 10:10) [7]Пошли фантазии.
← →
Andrew Volkov (2003-11-12 10:27) [8]Я не нашел встроеннй функции...долго не искал, но помойму их все равно нету
По поводу первого.
Все что идет в целой части числа относится к году, месяцу и дню. Все остальной идет в дробной части. Отсюда в сутках, как сказали раньше 86400 секунд. Значит, которые помещаются в единицу. Отсюда и считаем (1DateTime-2DateTime)/(1/86400)=разница в секундах.
По поводу второго - из первого
(1/86400)*количество секунд
и все это плюс 1DateTime=новый 1DateTime с приращением
Вот вроде и все...
← →
SergP (2003-11-12 14:32) [9]
> ЮЮ © (12.11.03 09:42) [3]
> если эти DateTime получены как Now() в ходе работы приложения,
> то следует обратить внимание на GetTickCount, на которую
> и перевод часов во время работы не скажется
Нет. Просто в базе одного форума дата и время хранится в виде mediumint(8)unsigned, я так понял что это кол секунд от 1970 года. Вот и нужно преобразовывать.
> Anatoly Podgoretsky © (12.11.03 09:52) [4]
> MBo © (12.11.03 09:39) [2]
> Я его сразу продаю - в сутках 86400 секунд
Большое спасибо. А то я никогда бы до этого не додумался. :)
> Andrew Volkov (12.11.03 10:27) [8]
> Я не нашел встроеннй функции...долго не искал, но помойму
> их все равно нету
>
> По поводу первого.
> Все что идет в целой части числа относится к году, месяцу
> и дню. Все остальной идет в дробной части. Отсюда в сутках,
> как сказали раньше 86400 секунд. Значит, которые помещаются
> в единицу. Отсюда и считаем (1DateTime-2DateTime)/(1/86400)=разница
> в секундах.
>
> По поводу второго - из первого
> (1/86400)*количество секунд
> и все это плюс 1DateTime=новый 1DateTime с приращением
>
> Вот вроде и все...
Хм. просто у меня почему-то сначала была уверенность что 1DateTime-2DateTime возвращает целое число (кол-во суток). Попробовал. Оказалось что все-таки вещественное. Так что все нормально уже.
ЗЫ.. Ну и любят же мастера поиздеваться над народом...
А вопрос то я задавал: "существуют ли встроенные средства?" а не "Помогите написать такой код".
← →
Andrew Volkov (2003-11-12 16:11) [10]
что 1DateTime-2DateTime возвращает целое число
Правильно, целая часть это количество дней, а фрактальная все - что меньше суток
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c