通常Time.now.utc
、プロジェクトのタイムスタンプに使用します。しかし今回は、 を使用するだけでは正確ではないようTime.now.utc
です。
それはTime.now.utc
第 2 レベルにあるように見えますが (正しいですか?)、私が望むほど正確ではありません。
ミリ秒レベルでタイムスタンプを生成する方法はありますか?
通常Time.now.utc
、プロジェクトのタイムスタンプに使用します。しかし今回は、 を使用するだけでは正確ではないようTime.now.utc
です。
それはTime.now.utc
第 2 レベルにあるように見えますが (正しいですか?)、私が望むほど正確ではありません。
ミリ秒レベルでタイムスタンプを生成する方法はありますか?
ドキュメントによると:
時間は、エポック (1970 年 1 月 1 日 00:00 UTC) からの分数付きの秒数として内部的に保存されます。
to_f
メソッドを使用して、内部の float 表現にアクセスできます。
irb> Time.now.to_f
=> 1334401921.06418
または、strftime
メソッドを使用してうまく印刷することもできます。たとえば、次のようになります。
irb> Time.now.strftime("%Y-%m-%d %H:%M:%S.%L")
=> "2012-04-14 21:20:58.100"
(少なくとも理論的には%L
、Ruby 1.8 で作業することはできませんが、1.9 では動作します)
時間のドキュメントから:
作成されるオブジェクトは、システムクロックで使用可能な解像度を使用して作成されるため、秒の小数部が含まれる場合があります。
例:
a = Time.new
"%.6f" % a.to_f
=> "1334402161.334542"