通常,我在我的项目中使用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