我已经搜索过高低,似乎无法找到答案。基本上,我调用YouTube API并获取JSON文档,然后解析它。其他一切都很好,但我不明白如何解析“#”持续时间'将其显示为人类可读的属性。
'持续时间'字段来自' PT1H5M34S' - 1小时5分34秒
或者它可能是' PT24S' - 24秒
或者' PT4M3S' - 4分3秒
在Ruby中必须有一种方法来解析这个字符串并使其具有人类可读性,以便我可以在循环中传递持续时间并转换它。非常感谢任何帮助或指导。我尝试过使用Date.parse,Time.parse,Date.strptime以及许多其他内容......就像只是将PT输出字符串并显示它一样,但这看起来并不像右。
答案 0 :(得分:7)
尝试使用arnau的ISO8601解析器(https://github.com/arnau/ISO8601)
用法:
d = ISO8601::Duration.new('PT1H5M34S')
d.to_seconds # => 3934.0
答案 1 :(得分: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
答案 2 :(得分:0)
您可以使用 Rails ActiveSupport::Duration
parsed_duration = ActiveSupport::Duration.parse(youtube_duration)
Time.at(parsed_duration).utc.strftime('%H:%M:%S')