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! :)
- Permalink
- Trackback
- Comentários (5)
- Ao som de: Death Cab for Cutie – Brothers on a Hotel Bed
Textos escritos por
Comentários #
Para que você precisou disso?
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... :)
Não entendi uma coisa… por que você fez todas as contas em float pra depois converter manualmente pra int?
Você inclui manualmente nas classes fixnum, bignum e float. Acho poderia incluir diretamente na numeric:
class Numeric; include Duration; end
Sylvestre: melhor! :)
Deixe um comentário