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

How do I format a duration into hours, minutes, and seconds?

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

Time.parse(duration_expr).seconds_since_midnight * 1000

其中时长表达式的格式为“HH:MM:SS”。但是,如果持续时间表达式的形式为“MM:SS”或只是“SS”,则上述表达式无法生成正确的毫秒数。如何将“MM:SS”或“SS”之类的表达式转换为“HH:MM:SS”?

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

为什么不能只填充字符串?即,如果它是 5 个字符长,则将“00:”放在前面,如果它是 2 个字符长,则将“00:00:”放在前面。 Time.parse 对这两个都很好。

我确信有更漂亮的方法来使用正则表达式和字符串格式化程序,但这就是您想要的基本逻辑。 (只要您的格式不会变得比此处暗示的更复杂。)

试试这个

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"