2013-12-13 114 views
1

我有以下范围:计算时间范围内的天数?

range = Time.now-1.month..Time.now 

我如何计算在该范围内的天数?

我正在运行Ruby 2.0.0。

+0

它是Rails代码? –

+0

错误,我想。没有意识到那些是Rails特有的方法。 – Shpigford

+0

'1.month'是我想的代码 –

回答

2
range = Time.now .. Time.now-1.month 
=> 2013-12-13 15:35:57 -0500..2013-11-13 15:35:57 -0500 
((range.first - range.last)/1.day).ceil 
=> 30 
+0

但是'1.month.ago'至少要* 30天吗?至少在所有月份中除了涉及二月份的月份? – Shpigford

+0

@Spigford,yep,'floor'圆形29.9999 ...降低到29。将其更改为'ceil',其中舍入达到30. – Mori

0

#<<方法Date减去一个月(#>>加1)。日期减去日期。

require 'date' 

p (Date.today - (Date.today << 1)).to_i #=> 30 
#so: 
range = Time.now-1.month..Time.now 
p p (range.last.to_date - range.first.to_date).to_i #=>30 
0

1.monthwill always be 30 days,所以你的范围将永远是一个30天的范围内。如果你想了解的天数在这一个月,因为你已经获得的ActiveSupport,你可以用Time#days_in_month

Time.days_in_month(Time.now.month, Time.now.year) 
# => 31 

Time.days_in_month(Time.now.month - 1, Time.now.year) 
# => 30 
+0

downvote的原因是什么? ActiveSupport从字面上将Integer#month定义为30天的持续时间。 –