如何将此字符串转换为毫秒?
How do I convert this string to milliseconds?
我正在使用 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
。我该如何调整以上内容以解决这个问题?
我就把这个留在这里:
def convert_to_ms(string)
string.split(':').map(&:to_i).inject(0) { |a, b| a * 60 + b } * 1000
end
convert_to_ms('8:49')
#=> 529000
只是另一个实现.. 因为它很有趣 :)
def duration_in_milliseconds(string)
string.split(':')
.map(&:to_i)
.reverse
.zip([1,60,3600])
.map{ |segment, multiplier| segment*multiplier }
.inject(:+) * 1000
end
我正在使用 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
。我该如何调整以上内容以解决这个问题?
我就把这个留在这里:
def convert_to_ms(string)
string.split(':').map(&:to_i).inject(0) { |a, b| a * 60 + b } * 1000
end
convert_to_ms('8:49')
#=> 529000
只是另一个实现.. 因为它很有趣 :)
def duration_in_milliseconds(string)
string.split(':')
.map(&:to_i)
.reverse
.zip([1,60,3600])
.map{ |segment, multiplier| segment*multiplier }
.inject(:+) * 1000
end