Форум: "Основная";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
ВнизДобавить к TDateTime несколько минут Найти похожие ветки
← →
Guest7 (2003-07-18 13:39) [0]Добрый день!
Проблема такая: нужно в цикле добавлять к определённой дате несколько минут, делаю так
DT:TDateTime;
...
for i:=0 to xxx do
begin
DT:=DT+minutes/1440;
...
end;
Так вот, при больших xxx время начинает сбиваться,
подскажите как правильно добавить.
← →
Виктор Щербаков (2003-07-18 13:42) [1]function IncMinute(const AValue: TDateTime;
const ANumberOfMinutes: Int64): TDateTime;
begin
Result := ((AValue * MinsPerDay) + ANumberOfMinutes) / MinsPerDay;
end;
← →
VAleksey (2003-07-18 13:42) [2]см
DecodeDate
EncodeDate
F1
← →
VAleksey (2003-07-18 13:43) [3]Сорри, можно проще
DecodeTime
EncodeTime
← →
Guest7 (2003-07-18 13:48) [4]to Виктор Щербаков
А чем Ваше решение отличается от моего
MinsPerDay = 1440
to VAleksey
но нужно наращивать и дни если перевалии за 24:00, а как проще сделать, одной строкой.
← →
Guest7 (2003-07-18 13:58) [5]Ну что? Вариантов нет?
← →
Verg (2003-07-18 14:03) [6]
> for i:=0 to xxx do
> begin
> DT:=DT+minutes/1440;
> ...
> end;
>
> Так вот, при больших xxx время начинает сбиваться,
> подскажите как правильно добавить.
Откажись от наращивания DT - здесь накапливается ошибка при делении на 1440 (суммируешь и ошибку тоже и при больших i ошибка
будет равна i*<ошибка одного деления>).
Для любого i получай нужную дату
как DT+(minutes*i)/1440
Ошибка будет минимальной.
← →
Verg (2003-07-18 14:06) [7]Точнее
DT+(minutes*(i+1))/1440
(т.к. цикл от i:=0)
← →
Guest7 (2003-07-18 14:12) [8]to Verg
Спасибо большое! Работает! Блин сам как-то недодумался.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c