2012-01-13 215 views
0

說完需要3分45秒才能完成任務。如何將時間量轉換爲秒?

我會表示爲3:45。

但我需要做的是,假設我給3:45,將其轉換成花的秒數。

所以給出3:45的時候,我想將其轉換成225

這需要使用Ruby 1.8.7。

+0

我會用乘法。幾小時呢? – 2012-01-13 19:21:29

回答

2

您可以使用像戴夫建議,或者如果你需要更多的東西,有一個duration library,做這個東西。

它看起來像:

001:0> ChronicDuration.parse("3:45") 
225 
+0

+1,更好的主意(和良好的創業板啓動,這和慢性手柄我大部分的時間需要)。 – 2012-01-13 19:32:37

0
pry(main)> a = "3:45".split(":") 
=> ["3", "45"] 
pry(main)> a[0].to_i*60 + a[1].to_i 
=> 225 

(在方法包裹起來,當然)。

+0

使用它,你如何考慮可能包含一個小時('1:37:49')?有時候會在那裏,其他時間不會。 – Shpigford 2012-01-13 19:27:16

+0

@Shpigford檢查數組長度。但我與喬爾和艾米麗 - 我們有理由零手工做到這一點。 – 2012-01-13 19:31:25

1

我會小心這裏重新發明輪子。雖然您可能會認爲只有幾分鐘和幾秒鐘的時間,並且您始終使用相同的格式,但更強健一些的話會更安全。

退房chronic_duration,解析經過時間的寶石。

1
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 
1
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 
+0

+1我喜歡它,除了猴子補丁部分;) – fresskoma 2012-07-28 20:38:13