2

我有一个可以举办活动的地点。我想要一个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

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

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

知道如何让它做'2012-06-20'吗?

4

2 回答 2

6

调用strftime在这里基本上什么都不做,因为它不会d以任何方式改变对象。

无论如何,Railsbeginning_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

所以只需将您的代码更改为:

Event.where('location_id=? and start_datetime>?', self.id, d.beginning_of_day)
于 2012-06-20T03:05:12.973 回答
1

我认为您实际上是"%Y-%m-%d"故意的"%m-%d-%Y",因为您想要'2012-06-20'。因此,请尝试以下操作:

def upcoming_events
  d=Time.new
  l=Event.where('location_id=? and start_datetime>?', self.id, d.strftime("%Y-%m-%d"))
end
于 2012-06-20T03:11:30.437 回答