Форматирование длительности, заданной в секундах
Функция, которая может быть полезной. Например, при отображении длительности аудио- или видео-файла.
Привожу код лишь по той причине, что в глобальной сети можно найти много вариантов реализации подобной функции, но в большинстве случаев код ужасен.
А функция на самом деле проста - её реализация помещается в одну строку.
Delphi версия:
function FormatDuration(Seconds: Integer): string;
begin
Result := Format('%d:%.2d:%.2d', [Seconds div 3600, (Seconds div 60) mod 60, Seconds mod 60]);
end; |
Пример использования:
FormatDuration(666); //0:11:06
FormatDuration(6666); //1:51:06
FormatDuration(66666); //18:31:06
FormatDuration(666666); //185:11:06
|
Oracle версия:
function format_duration(seconds_ in integer) return varchar2 is
begin
return to_char(trunc(seconds_ / 3600))||':'||
to_char(trunc(seconds_ / 60) mod 60, 'FM00')||':'||
to_char(seconds_ mod 60, 'FM00');
end; |
Пример использования:
select duration_format(666) from dual -- 0:11:06
select duration_format(6666) from dual -- 1:51:06
select duration_format(66666) from dual -- 18:31:06
select duration_format(666666) from dual -- 185:11:06
|