如何舍入DateTime值

tim*_*one 2 ruby ruby-on-rails ruby-on-rails-3.1

我有一个可以有活动的位置.我想要一个upcoming_events方法,但希望它向下舍入,如果有人在晚上10点看,它将显示今天的事件.我有这个:

def upcoming_events
  d=Time.new
  d.strftime("%m-%d-%Y")
  l=Event.where('location_id=? and start_datetime>?',self.id, d)
end
Run Code Online (Sandbox Code Playgroud)

我得到正确的转换,但在d.strftime但查询是:

SELECT `events`.* FROM `events` WHERE (location_id=301 and start_datetime>'2012-06-20 02:49:23')
Run Code Online (Sandbox Code Playgroud)

任何想法如何让它做'2012-06-20'?

And*_*all 6

调用strftime在这里基本上没有任何意义,因为它不会d以任何方式改变对象.

不管怎么说,Rails提供方法beginning_of_dayDateTime(以及Date&Time),你想要做什么:

d = Time.now        #=> 2012-06-19 23:05:54 -0400
d.beginning_of_day  #=> 2012-06-19 00:00:00 -0400
Run Code Online (Sandbox Code Playgroud)

所以只需将代码更改为:

Event.where('location_id=? and start_datetime>?', self.id, d.beginning_of_day)
Run Code Online (Sandbox Code Playgroud)