如何将持续时间格式化为小时、分钟和秒?
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"
我想将持续时间转换为毫秒。所以我有这个表达…
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"