如何将时间量转换为秒?

时间:2012-01-13 19:20:18

标签: ruby time

假设需要3分45秒才能完成任务。

我将其表示为3:45。

但我需要做的是,假设我被赋予3:45,将其转换为所花费的秒数。

因此,在给定3:45时,我想将其转换为225

这需要使用Ruby 1.8.7。

5 个答案:

答案 0 :(得分:2)

你可以使用Dave建议的东西,或者如果你需要更多的东西,那就有duration library来做这件事。

看起来像是:

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

答案 1 :(得分:1)

我要小心在这里重新发明轮子。虽然你可能会认为你只有几分钟和几秒钟,并且你总是拥有相同的格式,但更安全的东西更安全。

查看chronic_duration,一个解析已用时间的宝石。

答案 2 :(得分: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

答案 3 :(得分: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

答案 4 :(得分:0)

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

(当然,包含在一种方法中。)