タスクを完了するのに3分45秒かかりました。時間を秒単位に変換するには?
私はそれを3:45と表現したいと思います。
しかし、私がしなければならないのは、3:45
が与えられていると仮定して、それを要する秒数に変換することです。
したがって、3:45
が与えられると、それを225
に変換したいと思います。
これはRuby 1.8.7で動作する必要があります。
タスクを完了するのに3分45秒かかりました。時間を秒単位に変換するには?
私はそれを3:45と表現したいと思います。
しかし、私がしなければならないのは、3:45
が与えられていると仮定して、それを要する秒数に変換することです。
したがって、3:45
が与えられると、それを225
に変換したいと思います。
これはRuby 1.8.7で動作する必要があります。
デーブが提案、またはあなたがより多くのものを必要とする場合、このようなものを行いduration libraryがありますようにあなたが何かを使用することができます。
それは次のようになります。私はここに車輪の再発明は注意するだろう
001:0> ChronicDuration.parse("3:45")
225
+1、はるかに良いアイデア(とブートするための良い宝石;これは、私の時間のニーズのほとんどを処理する慢性)。 –
pry(main)> a = "3:45".split(":")
=> ["3", "45"]
pry(main)> a[0].to_i*60 + a[1].to_i
=> 225
(もちろんの方法、に包ま。)
これを使用して、1時間( '1:37:49')の可能性をどのように考慮しますか?時には時間がそこにあり、それ以外の時はありません。 – Shpigford
@Shpigford配列の長さを調べます。しかし、私はJoelとEmilyと一緒です。手でこれを行う理由はありません。 –
。あなたはほんの数分しかないと思いますが、いつも同じ形式になっていますが、より堅牢なものを作る方が安全です。
時間を解析するための宝石であるchronic_durationをチェックしてください。
def time_to_seconds(str)
time_in = []
time_in = str.split(":").reverse
asec = 0
secs = [1, 60, 60*60, 60*60*24]
time_in.size.times do {|i|
asec += secs[i].to_i * time_in[i].to_i
end
sec
end
class String
def to_secs
split(':').reverse.zip([1, 60, 60*60]).inject(0) { |m, e| m += e[0].to_i * e[1] }
end
end
puts '3:45'.to_secs # 225
puts '1:03:45'.to_secs # 3825
+1私は猿のパッチ部分を除いて好きです;) – fresskoma
私は、乗算を使用すると思います。時間はどうですか? –