3

通常Time.now.utc、プロジェクトのタイムスタンプに使用します。しかし今回は、 を使用するだけでは正確ではないようTime.now.utcです。

それはTime.now.utc第 2 レベルにあるように見えますが (正しいですか?)、私が望むほど正確ではありません。

ミリ秒レベルでタイムスタンプを生成する方法はありますか?

4

2 に答える 2

8

ドキュメントによると:

時間は、エポック (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 では動作します)

于 2012-04-14T11:21:52.187 に答える
5

時間のドキュメントから:

作成されるオブジェクトは、システムクロックで使用可能な解像度を使用して作成されるため、秒の小数部が含まれる場合があります。

例:

a = Time.new 
"%.6f" % a.to_f

=> "1334402161.334542"
于 2012-04-14T11:16:26.973 に答える