如何格式化持续时间ISO 8601(PT45S)

我搜索了高和低,似乎无法找到一个直接的答案。 基本上,我打电话给YouTube API并获取JSON文档,然后解析它。 其他一切都很好,但我不明白如何解析'duration'属性来将它显示为可读的。

“持续时间”字段为“PT1H5M34S” - 1小时5分34秒

或者它可能是'PT24S' - 24秒

或'PT4M3S' - 4分3秒

在Ruby中必须有一种方法来解析这个字符串,并使其成为人类可读的,这样我才能在循环中传递并转换它。 任何帮助或指导,非常感谢。 我试过使用Date.parse,Time.parse,Date.strptime以及许多其他的东西......就像只是将PT从字符串中取出并显示出来,但这看起来不正确。


试试arnau的ISO8601解析器(https://github.com/arnau/ISO8601)

用法:

 d = ISO8601::Duration.new('PT1H5M34S')
 d.to_seconds # => 3934.0

一个简单的方法来获得少于24小时的视频秒数:

dur = "PT34M5S"
pattern = "PT"
pattern += "%HH" if dur.include? "H"
pattern += "%MM" if dur.include? "M"
pattern += "%SS"
DateTime.strptime(dur, pattern).seconds_since_midnight.to_i
链接地址: http://www.djcxy.com/p/95419.html

上一篇: How to format duration ISO 8601 (PT45S)

下一篇: How to concatenate byte in Ruby