ホーム 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

記事を共有

最近人気な記事