その他
    ホーム 技術発信 DoRuby rubyでミリ秒までの時間生成方法

    rubyでミリ秒までの時間生成方法

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    「20120509104004229」、「2012-05-09T10:40:04.229Z」
    のようなミリ秒までの時間文字列を時間に変換して、計算をしたいことがあります。
    簡単ですが、ミリ秒までの時間オブジェクトの生成方法をご紹介します。■ruby1.8.7では下記の書き方です
    >> time = Time.utc(2012, 5, 9, 10, 40, 4, 229*1000)
    => Wed May 09 10:40:04 UTC 2012
    >> time.iso8601(3)
    => “2012-05-09T10:40:04.229Z”

    >> time  = Time.local(2012, 5, 9, 10, 40, 4, 229*1000)
    => Wed May 09 10:40:04 +0900 2012
    >> time.iso8601(3)
    => “2012-05-09T10:40:04.229+09:00”

    >> time2  = Time.local(2012, 5, 9, 10, 40, 5, 300*1000)
    => Wed May 09 10:40:05 +0900 2012
    >> time2 – time
    => 1.071

    ■ruby-1.9

    ruby-1.9では、「to_r」という文字列を有理数に変換するメソッドも使えます。

    ruby-1.9.2-p180 :004 > time = Time.utc(2012, 5, 9, 10, 40, 4, 229*1000)
     => 2012-05-09 10:40:04 UTC
    ruby-1.9.2-p180 :005 > time.iso8601(3)
     => “2012-05-09T10:40:04.229Z”
    ruby-1.9.2-p180 :006 > time.iso8601(6)
     => “2012-05-09T10:40:04.229000Z”

    ruby-1.9.2-p180 :007 > time = Time.utc(2012, 5, 9, 10, 40, “4.229”.to_r)
     => 2012-05-09 10:40:04 UTC
    ruby-1.9.2-p180 :008 > time.iso8601(6)
     => “2012-05-09T10:40:04.229000Z”
    ruby-1.9.2-p180 :009 > time.iso8601(3)
     => “2012-05-09T10:40:04.229Z”

    ちなにみ、ruby1.8.7では、
    >> time = Time.utc(2012, 5, 9, 10, 40, “4.229”.to_r)
    NoMethodError: undefined method `to_r’ for “4.229”:String
            from (irb):34
            from :0

    記事を共有
    モバイルバージョンを終了