jQuery
エポック(1970年1月1日)からのミリ秒数として現在の時刻を返すこの関数があります。
time = new Date().getTime();
Rubyで同じことをする方法はありますか?
現在、私はRubyを使用しています。これはうまく機能しますが、 10桁の整数(秒数)をTime.now.to_i
返します。
のように、ミリ秒数を表示するにはどうすればよいjQuery
ですか?
jQuery
エポック(1970年1月1日)からのミリ秒数として現在の時刻を返すこの関数があります。
time = new Date().getTime();
Rubyで同じことをする方法はありますか?
現在、私はRubyを使用しています。これはうまく機能しますが、 10桁の整数(秒数)をTime.now.to_i
返します。
のように、ミリ秒数を表示するにはどうすればよいjQuery
ですか?
require 'date'
p DateTime.now.strftime('%s') # "1384526946" (seconds)
p DateTime.now.strftime('%Q') # "1384526946523" (milliseconds)
Javascriptgettime()
は、エポックからのミリ秒数を返します。
RubyTime.now.to_i
では、エポックからの秒数が表示されます。これを に変更してTime.now.to_f
も、秒数は取得できますが、小数部分が含まれます。これに 1,000 を掛けるだけで、ミリ秒になります。次に#to_i
、それを整数に変換するために使用します。そして、あなたは次のようになります:
(Time.now.to_f * 1000).to_i
(Time.now.to_f * 1000).to_i
同じことをするべきです。
注意してください、混乱しないでください。Ruby が小数秒の概念を float としてサポートしているという事実は、実際には浮動小数点数にはなりません。Python で Wireshark タイムスタンプの時間比較を行っていたときに、これで問題が発生しました... pcap-ng での時間計算が機能していませんでした。2 つの部分 (整数秒と整数ナノ秒) を両方の整数として扱った場合にのみ、適切な数値を取得できました。
これは、浮動小数点数には精度の問題があるためです。実際、Ruby を簡単に見てみると、to_f が nsec と等しくないことがわかります。
irb(main):019:0> t=Time.now
=> 2015-04-10 16:41:35 -0500
irb(main):020:0> puts "#{t.to_f}; #{t.nsec}"
1428702095.1435847; 143584844
注意プログラマ。有効数字 3 桁までは安全かもしれませんが、事実は変わりません。コンピューターの浮動小数点数は近似値です。最新のコンピューターのナノ秒カウンターは整数です。
タイプキャスト Integer(1e6*Time.now.to_f) は、ミリ秒を保持できる Bignum を返します