我试图做一个每一个日期间隔使用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