Formatando a duração de uma música em milisegundos

27/07/07

Imagine que, por algum motivo, você precise formatar a duração de uma música de milisegundos para "0:00". Com o Ruby é moleza:

module Duration
  def to_duration
    total_secs = self / 1000.0
    mins = (total_secs / 60.0).to_i
    secs = (total_secs - mins*60).to_i
    "%d:%02d" % [mins, secs]
  end
end 
 
class Fixnum; include Duration; end
class Bignum; include Duration; end
class Float; include Duration; end
 
puts (68*1000).to_duration  # 1:08
puts (120*1000).to_duration # 2:00
puts (235*1000).to_duration # 3:55

Só não me pergunte para que precisei disso! :)

Comentários #


#1 Walter Cruz disse:
27 Jul 07, 10:15AM

Para que você precisou disso?

#2 Nando Vieira disse:
27 Jul 07, 12:33PM

Estou fazendo um script para me avisar quando sair novos albuns de artistas que gosto. E vou exibir a lista de músicas, mas o MusicBrainz retorna a duração como milisegundos, então… :)

#3 Daniel Luz disse:
28 Jul 07, 01:00AM

Não entendi uma coisa… por que você fez todas as contas em float pra depois converter manualmente pra int?

#4 Sylvestre Mergulhao disse:
29 Jul 07, 09:03PM

Você inclui manualmente nas classes fixnum, bignum e float. Acho poderia incluir diretamente na numeric:

class Numeric; include Duration; end

#5 Nando Vieira disse:
30 Jul 07, 11:48AM

Sylvestre: melhor! :)

Deixe um comentário




Este blog usa o Gravatar.


Não é aceito código HTML:
adicione-o no pastie.caboo.se ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.