Ruby on rails 在rails中打印日期范围

Ruby on rails 在rails中打印日期范围,ruby-on-rails,ruby,Ruby On Rails,Ruby,我想在接下来的一年中创建一个连续的日期范围对列表,包括周、月和两周 例如,在几周内,我需要一个日期范围为2015年11月2日至2015年11月8日,在今年剩余的时间内循环 在接下来的几个月里,它将需要制作2015年11月1日至2015年11月30日的影片,并在今年剩余时间内循环播放 任何帮助都将不胜感激 Rails使用ActiveSupport向Fixnum添加了诸如天、周、月、两周和年等方法 下面的例子并不完美,因为它没有考虑奇怪的日期情况,比如有53周的年份。我相信其他人会有更好的解决方案。

我想在接下来的一年中创建一个连续的日期范围对列表,包括周、月和两周

例如,在几周内,我需要一个日期范围为2015年11月2日至2015年11月8日,在今年剩余的时间内循环

在接下来的几个月里,它将需要制作2015年11月1日至2015年11月30日的影片,并在今年剩余时间内循环播放


任何帮助都将不胜感激

Rails使用ActiveSupport向Fixnum添加了诸如天、周、月、两周和年等方法

下面的例子并不完美,因为它没有考虑奇怪的日期情况,比如有53周的年份。我相信其他人会有更好的解决方案。您还可以通过在日期超过date.today+1.1年后打破循环来改进我下面的解决方案。为了演示的目的,我想让事情保持简单

(1..52).each_with_object([]) do |week_idx, memo| 
  memo << [Date.today + (week_idx - 1).weeks, Date.today + week_idx.weeks] 
end

你已经试图解决你自己的问题了吗?
weeks_ary = Array.new
month_ary = Array.new
(Date.today..Date.today.next_year).each do |date|
    if date.wday == 1
        end_week = date + 6.days
        weeks_ary << "#{date.strftime('%d/%m/%Y')} - #{end_week.strftime('%d/%m/%Y')}"
    end
    if date.strftime('%d') == "01"
        month_ary << "#{date.strftime('%d/%m/%Y')} - #{date.end_of_month.strftime('%d/%m/%Y')}"
    end
end
#output:
# weeks_ary = ["02/11/2015 - 08/11/2015", "09/11/2015 - 15/11/2015", "16/11/2015 - 22/11/2015", "23/11/2015 - 29/11/2015", "30/11/2015 - 06/12/2015", "07/12/2015 - 13/12/2015", "14/12/2015 - 20/12/2015", "21/12/2015 - 27/12/2015", "28/12/2015 - 03/01/2016", "04/01/2016 - 10/01/2016", "11/01/2016 - 17/01/2016", "18/01/2016 - 24/01/2016", "25/01/2016 - 31/01/2016", "01/02/2016 - 07/02/2016", "08/02/2016 - 14/02/2016", "15/02/2016 - 21/02/2016", "22/02/2016 - 28/02/2016", "29/02/2016 - 06/03/2016", "07/03/2016 - 13/03/2016", "14/03/2016 - 20/03/2016", "21/03/2016 - 27/03/2016", "28/03/2016 - 03/04/2016", "04/04/2016 - 10/04/2016", "11/04/2016 - 17/04/2016", "18/04/2016 - 24/04/2016", "25/04/2016 - 01/05/2016", "02/05/2016 - 08/05/2016", "09/05/2016 - 15/05/2016", "16/05/2016 - 22/05/2016", "23/05/2016 - 29/05/2016", "30/05/2016 - 05/06/2016", "06/06/2016 - 12/06/2016", "13/06/2016 - 19/06/2016", "20/06/2016 - 26/06/2016", "27/06/2016 - 03/07/2016", "04/07/2016 - 10/07/2016", "11/07/2016 - 17/07/2016", "18/07/2016 - 24/07/2016", "25/07/2016 - 31/07/2016", "01/08/2016 - 07/08/2016", "08/08/2016 - 14/08/2016", "15/08/2016 - 21/08/2016", "22/08/2016 - 28/08/2016", "29/08/2016 - 04/09/2016", "05/09/2016 - 11/09/2016", "12/09/2016 - 18/09/2016", "19/09/2016 - 25/09/2016", "26/09/2016 - 02/10/2016", "03/10/2016 - 09/10/2016", "10/10/2016 - 16/10/2016", "17/10/2016 - 23/10/2016", "24/10/2016 - 30/10/2016", "31/10/2016 - 06/11/2016"]
# month_ary = ["01/12/2015 - 31/12/2015", "01/01/2016 - 31/01/2016", "01/02/2016 - 29/02/2016", "01/03/2016 - 31/03/2016", "01/04/2016 - 30/04/2016", "01/05/2016 - 31/05/2016", "01/06/2016 - 30/06/2016", "01/07/2016 - 31/07/2016", "01/08/2016 - 31/08/2016", "01/09/2016 - 30/09/2016", "01/10/2016 - 31/10/2016", "01/11/2016 - 30/11/2016"]