2013-12-13 111 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天的持續時間。 –