通常,我在我的項目中使用Time.now.utc
作爲時間戳。但是這一次它看起來不夠準確,只能使用Time.now.utc
。Ruby - 比Time.now.utc更準確的時間戳
看起來Time.now.utc
在第二層(是否正確?),並不像我想要的那麼準確。
是否有方法可以在毫秒級別生成時間戳?
通常,我在我的項目中使用Time.now.utc
作爲時間戳。但是這一次它看起來不夠準確,只能使用Time.now.utc
。Ruby - 比Time.now.utc更準確的時間戳
看起來Time.now.utc
在第二層(是否正確?),並不像我想要的那麼準確。
是否有方法可以在毫秒級別生成時間戳?
從Time文檔:
創建將使用您的系統時鐘所能達到的分辨率要創建的對象,因此可能包括小數秒。
實例:
a = Time.new
"%.6f" % a.to_f
=> "1334402161.334542"
時間在內部存儲爲的秒級分,因爲曆元的數目,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上工作)
爲了更加精確,您可以使用(例如)'%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