![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как вывести время техпроцесса в чч:мм:сс, если оно превышает 24 ч
Key999 © (2007-04-25 17:41:00)Здравствуйте. Мастера, не подскажите, как лучше вывести в поле время техпроцесса, если оно превышает 24 часа. Используемый мною для этого код таков: IntToStr((timeproc div 3600)+RightStr(FormatDateTime('hh:mm:ss',timeproc/86400),6), где timeproc в секундах. Понимаю что это не оптимально. Но есть-ли для функции FormatDateTime в дельфи какой-нибудь формат, позволяющий без искажений отобразить такое, например, время "121:00:00"?
key999 (2007-04-25 19:02:00) [1]>Плохиш ©
20? Таких? За час? Маловато будет... Это просто время просмотра... ;-) Всем СЭНКС
antonn.pda (2007-04-25 18:33:00) [2]хранить время в секундах. а дальше просто:
часы=сек div 60*60
мин=(сек-часы*60*60) div 60
секк=(сек-часы*60*60-мин*60) div 60
вывод=часы.мин.секк
Плохиш (2007-04-25 18:32:00) [3]
> Key999 (25.04.07 17:41)
> key999 (25.04.07 18:20) [3]
За час 20 можно уже было несколько десятков таких функций написать...
key999 (2007-04-25 18:20:00) [4]To: DVM & Desdechado
В том-то и дело, что мне дни выделять не надо. Есть прибор, с которого я принимаю данные о прошедшей длительности техпроцесса и эти значения я принимаю как время программное. На базе этого программного, а также реальноговремени программа дает команду различным перифирийным устройствам на выполнение некоторых действий. Мне просто надо как-то по-человечески отобразить это программное время, но размерность такова "часы:минуты:секунды". Просто в технологической карте так прописано, и дни никто не поймет. А за идею СПАСИБО
DVM (2007-04-25 17:57:00) [5]
> позволяющий без искажений отобразить такое, например, время
> "121:00:00"?
ну это же неправильно, тут явно надо сутки выделить
Вот я тут использую нечто подобное, правда для разницы между датами, но суть понятна:
function FormatBetweenDates(Date1, Date2: TDateTime): string;
var
days, hours, minutes, seconds: int64;
begin
days := DaysBetween(Date1, Date2);
hours := HoursBetween(Date1, Date2) - days * 24;
minutes := MinutesBetween(Date1, Date2) - days * 24 * 60 - hours * 60;
seconds := SecondsBetween(Date1, Date2) - days * 24 * 3600 - hours * 3600 - minutes * 60;
result := IntToStr(days) + ' äí. ' + IntToStr(hours) + ' ÷. ' + IntToStr(minutes) + ' ì. ' + IntToStr(seconds) + ' ñ. ';
end;
Desdechado (2007-04-25 17:57:00) [6]Это не время, а длина временнOго интервала.