Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сложение 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо