我想知道如何安全地将HH:MM:SS转换为红宝石中的秒数,因为输入只有HH:MM:SS(或H:M:S),没有天数。
天数必须以小时为单位 - “168:00:00”而不是“7天00:00:00”。
答案 0 :(得分:4)
"12:34:56".split(':').map { |a| a.to_i }.inject(0) { |a, b| a * 60 + b}
=> 45296
答案 1 :(得分:3)
h, m, s = "168:00:00".split(":").map(&:to_i)
h %= 24
(((h * 60) + m) * 60) + s
答案 2 :(得分:-4)
解决方案非常简单:
secs = 0
=> 0
"12:34:56".split(":").reverse.each_with_index do |x,y|
"#{secs} += (#{x.to_i})*(#{60**y})"
secs += (x.to_i)*(60**y)
end
=> ["56", "34", "12"]
secs
=> 45296
不使用Time
或DateTime
且没有时区问题!
干杯!