Я использую Rails 4.2.4. У меня есть ниже метод для преобразования времени (длительность) в миллисекундах ...Получение аргумента вне диапазона при попытке включить длительность в миллисекундах в Rails 4
Time.parse(convert_to_hrs(duration)).seconds_since_midnight * 1000
, в котором метод «convert_to_hrs» определяется как
def convert_to_hrs(string)
case string.count(':')
when 0
'00:00:' + string.rjust(2, '0')
when 1
'00:' + string
else
string
end
end
Однако, если продолжительность что-то действительно большой (например, «34:13:00» - читай: 34 часов, 13 минут и ноль секунд), выше завершается с ошибкой
Error during processing: argument out of range
/Users/mikea/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/time.rb:302:in `local'
/Users/mikea/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/time.rb:302:in `make_time'
/Users/mikea/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/time.rb:366:in `parse'
/Users/mikea/Documents/workspace/myproject/app/services/my_service.rb:25:in `block in process_page_data'
/Users/mikea/Documents/workspace/myproject/app/services/my_service.rb:22:in `each'
/Users/mikea/Documents/workspace/myproject/app/services/my_service.rb:22:in `process_page_data'
Как переписать свою первую линию для точного преобразования длительности в милли секунд?
Я понимаю, почему ошибка случается, но я не понимаю, как написать инструкцию, которая будет правильно возвращать длительность в миллисекундах, учитывая указанное мной значение. Как мне это сделать? –
Каково значение для 'duration'? – hgsongra
Пойдите с примером в моем вопросе, который есть «44:09» –