ruby - Time.now - 1.hour.ago => 3599.999604?

标签 ruby ruby-on-rails-4

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/

相关文章:

ruby-on-rails - Rails -v 在 Mac OSX 上说错误的 rails 版本

ruby-on-rails - 使用上下文在 Rails 中链接范围的问题

ruby-on-rails - 使用 bcrypt 生成的 Rails 密码是可移植的吗?

ruby-on-rails - Errno::ENOENT:没有这样的文件或目录 config/settings.yml (heroku 部署)

ruby - 从模块上下文中加载 Ruby 文件?

ruby-on-rails - 如何使用 Ruby on Rails 和 Haml 在当前迭代中访问数组中的下一项?

ruby - 用正则表达式替换文本 Ruby Capybara

ruby - 不同 Ruby 项目之间代码重用的最佳实践是什么?

javascript - Rails 4 - Toaster 通知而不是 flash 通知

ruby-on-rails - 使用 rspec 测试 oauth2 get_token