irb(main):012:0> Time.now - 1.hour.ago
=> 3599.999604
导致此问题的代码评估是什么?
我知道这里计算了 2 个代码路径,我假设 ruby 首先计算表达式,然后计算 1.hour.ago
表达式,然后才计算 Time.now
表达式。两者之间的时间差是 ruby 解释器运行评估所需的时间。
最佳答案
确定现在几点需要花费很少但非零的时间。在这种情况下,差异为 395µs。在我的机器上使用 Ruby 2.3.1 进行的快速测试显示了 16µs 的差异,这更符合我的预期。我不确定为什么在您的计算机上计算本地时间需要这么长时间,但这可能只是随机事件。
如果你想要一个精确的值,试试这个:
Time.now - 1.hour
请记住,时间是完全疯狂的,“一小时前”可能意味着两小时前,或零小时前,或者完全取决于您调用此代码的时间。夏令时混淆了它所涉及的一切。
关于ruby - Time.now - 1.hour.ago => 3599.999604?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39986757/