2016-09-06 27 views
5

Rubyでは、エポック(1970年)以来の現在のシステム時間を得る正しい方法はミリ秒現在のシステム時間をミリ秒で取得する

私はTime.now.to_iを試しましたが、私が望む結果ではないようです。私は結果がミリ秒で、longタイプで、floatまたはdoubleではないことが必要です。

答えて

5
(Time.now.to_f * 1000).to_i 

Time.now.to_fには10進数を含む時刻が表示されます。ミリ秒数を取得するには、時間を1000倍してください。

3

to_iusecを組み合わせることができます。上記のようないくつかのケースで

t.strftime('%s%L') 
#=> "1473152006002" 

to_fが僅かに導入する:

require 'time' 
t = Time.at(1473152006, 2000) 

t.to_i * 1000 + t.usec/1000 
#=> 1473152006002 

これは、と等価である:前者戻るエポックからの秒数は、後者は、マイクロ秒の数を返します浮動小数点エラー:

t.to_f * 1000 
#=> 1473152006001.9998 
(t.to_f * 1000).to_i 
#=> 1473152006001 
+0

値を丸めて固定することができます。これはfloat値をintに変換します。 '(Time.now.to_f * 1000).round' –

+1

' Time.at(1473152006、999) 'で失敗する@kallax' – Stefan

関連する問題