【发布时间】:2017-02-10 04:41:57
【问题描述】:
我使用的是 Rails 4.2.7。我想计算给定持续时间的毫秒数,其中可能包括小时、分钟和秒。于是我写了这两个函数:
def convert_to_hrs(string)
if !string.nil?
string.strip!
case string.count(':')
when 0
'00:00:' + string.rjust(2, '0')
when 1
'00:' + string
else
string
end
else
"00:00:00"
end
end
def duration_in_milliseconds(input)
input = convert_to_hrs(input)
if input.match(/\d+:\d\d:\d\d\.?\d*/)
h, m, s = input.split(':').map(&:to_i)
(h.hours + m.minutes + s.seconds) * 1000
else
0
end
end
不幸的是,当我用8:49 之类的号码拨打duration_in_milliseconds(input) 时,结果是zero。结果应解释为8 minutes and 49 seconds,以毫秒为单位将是529000。我该如何调整上述内容以解决此问题?
【问题讨论】:
-
这意味着你的条件失败了,意味着你的正则表达式不正确。你能举出输入字符串的例子吗?
标签: ruby-on-rails ruby time duration milliseconds