ruby-on-rails - 在两个日期时间之间迭代,步长为一小时

标签 ruby-on-rails ruby ruby-on-rails-3

我正在寻找一种有效的方法,在 Ruby 1.9.x/Rails 3.2.x 中,以一个小时的步长在两个 DateTime 对象之间进行迭代。

('2013-01-01'.to_datetime .. '2013-02-01'.to_datetime).step(1.hour) do |date|
   ...
end

我知道这个问题是 1.hour 只是秒数,但我尝试将其转换为 DateTime 对象并将其用作步骤也不起作用.

我查看了“Beware of Ruby Sugar”。它在底部附近提到 DateTime 有一个直接的 step 方法。我通过在 DateTime 对象上运行 methods 来确认这一点,但是我在 DateTime 中找不到任何关于 step 的文档,无论是在 Ruby 还是 Rails 的文档中。

最佳答案

与我在“How do I return an array of days and hours from a range?”中的回答类似,诀窍是使用 to_i 处理纪元以来的秒数:

('2013-01-01'.to_datetime.to_i .. '2013-02-01'.to_datetime.to_i).step(1.hour) do |date|
  puts Time.at(date)
end

请注意,Time.at() 使用您本地的时区进行转换,因此您可能希望使用 Time.at(date).utc 指定 UTC。 p>

关于ruby-on-rails - 在两个日期时间之间迭代,步长为一小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14555205/

相关文章:

将 Java 与 Ruby 结合使用时出现 java.lang.NullPointerException

ruby - 如何在 Rails 3 中实现安全性?

ruby-on-rails - Rails3/Sessions/Active_Record_Store/Signout --> 如何删除Sessions表中的cookie和记录?

ruby-on-rails - Rails 教程:SQLite3::ConstraintException:唯一约束失败:users.email

ruby-on-rails - 如何使用运行 ruby​​ :3. 0.4-alpine 的 Dockerized Rails 应用程序获取 wkhtmltopdf 以便与 Wicked PDF 一起使用

windows - 如何从 ruby​​ 将原始打印机代码写入 Windows 打印机共享?

ruby-on-rails - rails : strong_params and getter/setter methods

ruby-on-rails - 运行 bundle 后安装 pg gem 时出错

ruby-on-rails-3 - 活跃管理员 gem 模型协会。

ruby-on-rails - Rails 3 form_for嵌套路由,用于自定义操作