![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сложение TTime [D6, Win2k]
Pashkerton © (2004-10-19 09:38:00)Доброе утро. Пусть есть такая последовательность из типов TTime:
10:56:20
7:00:15
4:43:46
10:06:02
10:44:07
2:28:11
Как её корректно просуммировать. TTime не поддерживает > 24 часов. Пытался переводить TTime в double. Сумма получается некорректная.
Pashkerton (2004-10-19 14:39:00) [1]Разобрался. Всем спасибо.
var
T: TDateTime;
D: integer;
hh, mm, ss, ms: word;
begin
T := StrToTime('10:56:20') +
StrToTime('7:00:15') +
StrToTime('4:43:46') +
StrToTime('10:06:02') +
StrToTime('10:44:07') +
StrToTime('2:28:11');
D := trunc(T) * 24;
DecodeTime(T, hh, mm, ss, ms);
inc(hh, D);
ShowMessage(Format('%.*d:%.*d:%.*d', [2, hh, 2, mm, 2, ss]));
end;
Pashkerton (2004-10-19 12:35:00) [2]TTime > 24 часов. В эту мною написанную глупость я вник, признаюсь.
Anatoly Podgoretsky (2004-10-19 11:55:00) [3]Pashkerton (19.10.04 09:38)
TTime поддерживает > 24 часов
Pashkerton (19.10.04 10:02) [4]
Такого времени не существует (максимум 23:59:59), неверный формат. Пиши сообственную функцию форматирования
DiamondShark (2004-10-19 10:55:00) [4]Как только вы перестанете путать два разных понятия "момент времени" и "количество времени" всё встанет на свои места.
ЮЮ (2004-10-19 10:09:00) [5]TTime - это только дробная часть - доля суток, отсюда и пляши
Алхимик (2004-10-19 10:09:00) [6]
> [4] Pashkerton (19.10.04 10:02)
> При операции
> TimeToStr(StrToTime('15:00:00')+StrToTime('15:00:00'))
> результат бедет 6:00:00. А мне нужно 30:00:00
Эта функция переводит времяв строку.
Воспользуйся DateTimeToStr или FormatDateTime.
VMcL (2004-10-19 10:05:00) [7]>> Pashkerton (19.10.04 09:38)
К исходному времени прибавить требуемое, переведенное в секунды, если не ошибаюсь.
Pashkerton (2004-10-19 10:02:00) [8]При операции
TimeToStr(StrToTime('15:00:00')+StrToTime('15:00:00'))
результат бедет 6:00:00. А мне нужно 30:00:00
Pashkerton (2004-10-19 09:58:00) [9]Переводил так:
hhmm: double
Функция где result := int(hhmm) + (frac(hhmm) / 0.6);
1.30 => 1.5 (1h.30m = 1.5h)
Алхимик (2004-10-19 09:53:00) [10]TTime = TDateTime = Double
Rem (2004-10-19 09:49:00) [11]>>TTime не поддерживает > 24 часов
24 часа = 1 сутки
>>Пытался переводить TTime в double
TTime = type double;