如何将持续时间格式化为小时,分钟和秒?

时间:2016-06-16 02:07:11

标签: ruby-on-rails-4 time formatting string-formatting

我想将持续时间转换为毫秒。所以我有这个表达......

Time.parse(duration_expr).seconds_since_midnight * 1000

其中持续时间表达式为“HH:MM:SS”。但是,如果持续时间表达式的形式为“MM:SS”或仅为“SS”,则上述情况无法产生正确的毫秒数。如何使用“MM:SS”或“SS”这样的表达式并将其转换为“HH:MM:SS”?

我正在使用Rails 4.2.3。谢谢, - 戴夫

2 个答案:

答案 0 :(得分:0)

为什么你不能填充字符串?即如果长度为5个字符,请输入" 00:"在前面,如果它长2个字符,请放置" 00:00:"在前面。 Time.parse将对这两个都很好。

我确信有更好的方法可以使用正则表达式和字符串格式化程序,但这是您想要的基本逻辑。 (只要你的格式不会比这里暗示的更复杂。)

答案 1 :(得分:0)

试试这个

def convert_to_hrs(string)
  case string.count(':')
  when 0
    '00:00:' + string.rjust(2, '0')
  when 1
    '00:' + string
  else
    string
  end
end
[30] pry(main)> convert_to_hrs('1')
=> "00:00:01"
[31] pry(main)> convert_to_hrs('12:01')
=> "00:12:01"
[32] pry(main)> convert_to_hrs('12:12:01')
=> "12:12:01"