如何在Rails中将随机DateTime四舍五入到小时开始?

She*_*don 13 ruby datetime ruby-on-rails date

基本上我想在去年获得一个随机的日期时间:

rand(1.year).ago  #=> Sun, 22 Sep 2013 18:37:44 UTC +00:00 (example)
Run Code Online (Sandbox Code Playgroud)

但是,如何指定或限制时间?例如:

Sun, 22 Sep 2013 18:00:00 UTC +00:00
Sat, 02 Nov 2013 10:00:00 UTC +00:00
Fri, 12 Apr 2013 21:00:00 UTC +00:00
Run Code Online (Sandbox Code Playgroud)

She*_*don 38

我终于找到了我要找的东西.@ Stoic的答案非常好,但我找到了这个可用的方法(http://api.rubyonrails.org/classes/DateTime.html):

rand(1.year).ago.beginning_of_hour
Run Code Online (Sandbox Code Playgroud)

完全相同的东西,但看起来更整洁,并防止你必须编写自己的功能.

  • 在ruby 2.1.2中不推荐在数字上调用#ago.现在使用`rand(1 .year).seconds.ago.beginning_of_hour` (3认同)
  • @andorov`previous`实际上是ActiveSupport的一部分,而不是核心ruby.在数字上调用它在4.1中已弃用,在4.2中不允许. (2认同)

and*_*rov 21

将日期时间舍入到Rails中最近的小时

(DateTime.now + 30.minutes).beginning_of_hour
Run Code Online (Sandbox Code Playgroud)

不是实际问题的答案,但它确实回答了问题的标题(这就是我如何到达这里).