我試圖做一個每一個日期間隔使用Rails 3.2日期..是這樣的:步驟在區間
(1.months.ago.to_date..5.months.from_now.to_date).step(1.month).each do |date|
puts date.strftime('%m/%Y')
end
但是,在step(1.month)
不行..好像它拿到第一個月(例如:今天是八月,它將返回茱莉),並沒有重複其他月份。
有沒有辦法做到這一點?
感謝
我試圖做一個每一個日期間隔使用Rails 3.2日期..是這樣的:步驟在區間
(1.months.ago.to_date..5.months.from_now.to_date).step(1.month).each do |date|
puts date.strftime('%m/%Y')
end
但是,在step(1.month)
不行..好像它拿到第一個月(例如:今天是八月,它將返回茱莉),並沒有重複其他月份。
有沒有辦法做到這一點?
感謝
您使用日期爲您的迭代基地,1.month翻譯(幕後)到秒的,我相信。
當您添加到Date對象,它在天,即:
Date.today + 1將是明天
因此,在你的榜樣,你正在嘗試步驟2592000天。
你可能需要的是更多的東西一樣:
(1.months.ago.to_date..5.months.from_now.to_date).step(30).each { |date| puts date.strftime('%m/%Y') }
如果你正在尋找的迭代器是足夠聰明,知道有多少天都在每個月當您正在「加緊」這不會給發生。你需要自己推出。
您可以通過幾個月通過使用>>運算智能化迭代,所以:
date = Date.today
while date < 5.months.from_now.to_date do
puts date.strftime('%m/%Y')
date = date>>1
end
這個怎麼樣:
current_date, end_date = Date.today, 5.monthes.from_now.to_date
while current_date <= end_date
puts current_date
current_date = current_date.next_month
end
感謝的人,它完美的作品! – caarlos0
這幫了我很大的忙。我天真地認爲在一個月內以幾天爲單位計算出步驟方法。謝謝! – kylekeesling