суббота, 11 декабря 2010 г.

Форматирование длительности, заданной в секундах, в строку вида ч:мм:сс

Ещё одна функция, которая может быть полезной. Например, при отображении длительности аудио- или видеофайла.

Привожу код лишь по той причине, что в глобальной сети можно найти много вариантов реализации подобной функции, но в большинстве случаев код ужасен :( У GunSmoker'а хорошо про это написано.

А функция на самом деле проста - её реализация помещается в одну строку.

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
  if seconds_ is null then
    return null;
  else
    return  to_char(trunc(seconds_ / 3600))||':'||
            to_char(trunc(seconds_ / 60) mod 60, 'FM00')||':'||
            to_char(seconds_ mod 60, 'FM00');
  end if;
end;

Пример использования:

  select format_duration(666) from dual     -- 0:11:06
  select format_duration(6666) from dual    -- 1:51:06
  select format_duration(66666) from dual   -- 18:31:06
  select format_duration(666666) from dual  -- 185:11:06

3 коммент.:

iQuantii комментирует...
Этот комментарий был удален автором.
Анонимный комментирует...

Николай, здравствуте, пожалуста создайте на своем сайте Топик для начинающих по Delphi, читал Ваши статьи и хочется на Вашем сайте поучиться как это делать, понимаю что мне до этого очень далеко, но хотя бы на простеньких примерах. я тока начинаю заниматься Delphi - Вопрос тут вот в чем, ни как ни могу сам применить при составлении программки компоненты Delphi - в книжке вроде все понятно что пишут, а сам составить еще не могу - в книжках мало примеров по каждому компоненту Delphi - пожалуста, очень прошу рассказать в топике для начинающих по Delphi про каждый компонент с примером по отдельности, тока по отдельности, может получиться потом мне самому на этих примерах - компонентах составить первую программку, заранее извиняюсь, если что, но почитал Ваши статьи, и надеюсь, на этом сайте поймут и помогут с примерами по каждому компоненту. Спасибо. Буду очень ждать Вашего ответа и Топик для начинающих по Delphi.

Николай Зверев комментирует...

2 Анонимный
Простите, но это не сайт, это блог - бесплатный сервис Google, который я использую с целью публикации своих мыслей и заметок. При этом от показа рекламы я за полтора года заработал всего полтора доллара, что даже не окупает доменное имя delphinotes.ru :с)

Доступной (в т.ч. и бесплатной) информации о программировании (в т.ч. и на Delphi) для начинающих настолько много, что я просто не намереваюсь писать свою книгу (трата времени, которая не будет окуплена ну никак).

Прежде чем дать Вам совет, задам Вам вопрос: с чего вы начинаете изучение иностранного языка?
Ответ: с алфавита.
Пока Вы не выучите алфавит языка, Вы не сможете читать (и, главное, писать!) слова, предложения, абзацы, статьи.

Тоже и в программировании. Шаг за шагом. Ключевые слова и конструкции. Типы данных: простые, перечисляемые, сложные, указатели (пока не поняли как оно работает - делать шаг вперёд чревато разочарованиями)... Процедурное программирование. Это ещё не Delphi, это ещё Pascal. Затем ООП - хотя бы понимание как оно работает и зачем оно нужно. И только уже потом Delphi - визуальная среда, компоненты, механизмы обработки и перехвата ошибок (исключений)... А потом уже можно и попробовать и работу с COM (DirectX, например), с базами данных...
Главное - стремление, усидчивость и работа (над собой, с примерами, задачами, воображением, творчеством).

Насчёт книг - их не обязательно должно быть много, достаточно даже одной, главное чтобы это была хорошая книга. Например: Д. Осипов "Delphi. Професиональное программирование". В книге порядка 1000 страниц, для начала Вам хватит первых двухсот - изучите (и практикуйте) досконально.

А если у Вас возникают конкретные вопросы - для этого существует большое количество русскоязычных форумов. Пройдитесь по ним, вот список:
http://www.gunsmoker.ru/p/delphi.html#forumsrus

А ещё почитайте, не поленитесь, найдите время, статьи, собранные здесь:
http://www.gunsmoker.ru/p/blog-page_13.html

(Только не надо всё читать в один присест - две-три статьи в неделю - самое то.)

Искренне желаю Вам успехов! :с)

P.S.: другие комментарии с подобной просьбой я удалил.

Отправить комментарий

.

.