我希望在明年创建一个日期范围对的顺序列表,包括数周,数月和四个星期。
因此,例如,几个星期我需要有一个日期范围2/11/2015 - 2015年11月8日,在今年余下的时间里循环。
几个月它需要生产01/11/2015 - 2015年11月30日,并在今年剩余时间内完成。
非常感谢任何帮助!!
答案 0 :(得分:0)
使用ActiveSupport,Rails会向Fixnum添加方法,例如#days
,#weeks
,#months
,#fortnights
和#years
。
以下示例并不完美,因为它没有考虑奇怪的日期案例(例如有53周的年份)。我相信别人会有更好的解决方案。您还可以通过在日期超过Date.today + 1.year
后退出循环来改进我的解决方案。为了演示目的,我想保持简单。
(1..52).each_with_object([]) do |week_idx, memo|
memo << [Date.today + (week_idx - 1).weeks, Date.today + week_idx.weeks]
end
答案 1 :(得分:0)
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"]