在 ruby 中将小时、分钟和秒转换为秒

Converting hours, minutes and seconds to seconds in ruby

我想知道如何安全地将 HH:MM:SS 转换为 ruby 中的秒数,因为输入只会在 HH:MM:SS(或 H:M:S)中,没有天数。

天数必须以小时为单位 - “168:00:00”而不是“7 天,00:00:00”。

解决方法很简单:

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

没有使用 TimeDateTime 并且没有时区问题!

干杯!

'12:34:56'.split(':').map(&:to_i).inject(0) { |a, b| a * 60 + b }
=> 45296
h, m, s = "168:00:00".split(":").map(&:to_i)
h %= 24
(((h * 60) + m) * 60) + s