在Ruby on Rails中查找2天之间的天数

时间:2014-01-03 12:41:06

标签: ruby-on-rails ruby datetime

我在找到2个日期之间的日子时遇到了一些问题。

方案如下:

time = Time.new
enddate_timestamp = time.strftime("%Y-%m-%d %H:%M:%S")               
startdate = @logInfo.updated_at   #here updated_at is the column in the db .

找到日子的最佳方式是什么?

4 个答案:

答案 0 :(得分:1)

Post.where(["date(created_at) BETWEEN ? AND ?", Date.yesterday, Date.tomorrow]

更多详情:http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-where

答案 1 :(得分:1)

有几种可能的解决方案。可能的方法是创建一个带有日期的Range,然后将范围转换为数组

# set the boundaries
today = Time.current
past  = 5.days.ago

请注意,两个边界都是时间实例。我们应该把它们投入日期。我使用了时间,因为你的专栏是时间。

range = past.to_date..today.to_date 
# => Sun, 29 Dec 2013..Fri, 03 Jan 2014 

使用to_a扩展获取所有日期的范围

range.to_a
# => [Sun, 29 Dec 2013, Mon, 30 Dec 2013, Tue, 31 Dec 2013, Wed, 01 Jan 2014, Thu, 02 Jan 2014, Fri, 03 Jan 2014]

range.count
# => 6

您也可以枚举它们

range.each { |day| puts day.day }
29
30
31
1
2
3

答案 2 :(得分:0)

now    = Time.now
future = Time.now + 100 days

while now < future
  now = now + 1.day
  puts now
end

这将为您提供日期,而不是天数。

答案 3 :(得分:0)

(startdate.beginning_of_day..enddate_timestamp.to_time.beginning_of_day).step(1.day) do |day|    
  puts day
end
P.S:表现明智,这不好。