2012-04-14 134 views
2

通常,我在我的項目中使用Time.now.utc作爲時間戳。但是這一次它看起來不夠準確,只能使用Time.now.utcRuby - 比Time.now.utc更準確的時間戳

看起來Time.now.utc在第二層(是否正確?),並不像我想要的那麼準確。

是否有方法可以在毫秒級別生成時間戳?

回答

5

Time文檔:

創建將使用您的系統時鐘所能達到的分辨率要創建的對象,因此可能包括小數秒。

實例:

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

=> "1334402161.334542" 
6

根據the documentation

時間在內部存儲爲的秒級分,因爲曆元的數目,1970年1月1日00:00 UTC

您可以使用訪問內部浮點數表示方法,例如

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上工作)

+0

爲了更加精確,您可以使用(例如)'%6N'作爲6位數字(微秒)。 [The docs](http://ruby-doc.org/core-2.3.0/Time.html#method-i-strftime)顯示的最大精度爲24位(yoctoseconds),但您可以執行'%1000N'如果你想。當然,你的CPU甚至在這段時間內甚至不能執行單個指令,Ruby增加了很多開銷,所以大的精度只是理論上的。 – 2016-03-15 13:48:55