106

jQueryエポック(1970年1月1日)からのミリ秒数として現在の時刻を返すこの関数があります。

time = new Date().getTime();

Rubyで同じことをする方法はありますか?

現在、私はRubyを使用しています。これはうまく機能しますが、 10桁の整数(秒数)をTime.now.to_i返します。

のように、ミリ秒数を表示するにはどうすればよいjQueryですか?

4

8 に答える 8

172
require 'date'

p DateTime.now.strftime('%s') # "1384526946" (seconds)
p DateTime.now.strftime('%Q') # "1384526946523" (milliseconds)
于 2013-11-15T14:51:05.383 に答える
109

Javascriptgettime()は、エポックからのミリ秒数を返します。

RubyTime.now.to_iでは、エポックからの秒数が表示されます。これを に変更してTime.now.to_fも、秒数は取得できますが、小数部分が含まれます。これに 1,000 を掛けるだけで、ミリ秒になります。次に#to_i、それを整数に変換するために使用します。そして、あなたは次のようになります:

(Time.now.to_f * 1000).to_i
于 2012-10-30T23:16:29.143 に答える
33

(Time.now.to_f * 1000).to_i同じことをするべきです。

于 2012-10-30T23:12:26.360 に答える
19

注意してください、混乱しないでください。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 桁までは安全かもしれませんが、事実は変わりません。コンピューターの浮動小数点数は近似値です。最新のコンピューターのナノ秒カウンターは整数です。

于 2015-04-10T22:06:38.563 に答える
0

タイプキャスト Integer(1e6*Time.now.to_f) は、ミリ秒を保持できる Bignum を返します

于 2015-07-03T00:25:27.230 に答える