3

schema.org の ruby​​ on rails で iso8601 形式で期間を出力しようとしています。iso8601でタイムスタンプを出力する方法はすでに知っています。例: video.created_at.iso8601

私が今やろうとしているのは、次の形式で何かを出力することです。

<meta itemprop="duration" content="PT1M33S" />

それが iso8601 期間形式です。仕様についてはhttp://en.wikipedia.org/wiki/ISO_8601#Durationsで読むことができます

現在、私はstrftimeでハッキングしていますが、それは理想的ではありません...

Time.at(@video.duration).strftime('PT%MM:%SS')

より上品なソリューションをいただければ幸いです。そして、必要なときに何時間も処理するのに十分なほどスマートです。Rails 3.2アプリになるので、ActiveSupportなどに頼っても問題ありません。ありがとう!

4

3 に答える 3

2

これが私のために働いたものと出力でした:

ruby-1.9.2-head :004 > require 'time'
 => true
ruby-1.9.2-head :005 > Time.at(1000).iso8601
 => "1970-01-01T02:16:40+02:00"
ruby-1.9.2-head :012 > Time.at(1000).getgm.iso8601[10,9]
 => "T00:16:40"
ruby-1.9.2-head :011 > Time.at(60).getgm.iso8601[10,9]
 => "T00:01:00"

を使用することによりgetgm、タイムゾーンから副作用を排除します。

編集: ISO8601で期間自体が必要であることに気づいていませんでした-完全にフォーマットされたISO8601タイムスタンプからの断片が必要だと考えました。あなたはあなたの目標のためにこれを使うことができます:

https://github.com/arnau/ISO8601

于 2012-03-01T19:05:39.907 に答える
2

これに対する答えをまだ探している場合は、 ruby​​-duration gem をチェックしてください。

于 2012-07-27T03:58:25.800 に答える