Ruby on rails 如何在Ruby中创建从当前月份开始的日期范围数组?
多亏了,我才能够创建一个返回多个日期范围的函数:Ruby on rails 如何在Ruby中创建从当前月份开始的日期范围数组?,ruby-on-rails,ruby,arrays,ruby-on-rails-3,Ruby On Rails,Ruby,Arrays,Ruby On Rails 3,多亏了,我才能够创建一个返回多个日期范围的函数: def years [2013, 2012, 2011, 2010, 2009] end def month_ranges years.flat_map { |y| 12.downto(1).map { |m| Date.new(y,m,1)..Date.new(y,m,-1) } } end # => [ Mon, 01 Dec 2013..Wed, 31 Dec 2013, Sat, 01 Nov
def years
[2013, 2012, 2011, 2010, 2009]
end
def month_ranges
years.flat_map { |y|
12.downto(1).map { |m| Date.new(y,m,1)..Date.new(y,m,-1) }
}
end
# =>
[
Mon, 01 Dec 2013..Wed, 31 Dec 2013,
Sat, 01 Nov 2013..Sun, 30 Nov 2013,
Wed, 01 Oct 2013..Fri, 31 Oct 2013,
Mon, 01 Sep 2013..Tue, 30 Sep 2013
]
现在,有没有办法让这个日期数组也从当前年份的当前月份开始?在接下来的几年里,它应该总是从12月开始,到1月结束
感谢所有能提供帮助的人。简单回答:对照当前年份检查年份。如果相等,则从当月开始,如果不相等,则从12开始
years = [2013, 2012, 2011, 2010, 2009]
def month_ranges
years.flat_map { |y|
if y == Date.today.year
start = Date.today.month
else
start = 12
end
start.downto(1).map { |m| Date.new(y,m,1)..Date.new(y,m,-1) }
}
end
简单回答:对照当前年份检查年份。如果相等,则从当月开始,如果不相等,则从12开始
years = [2013, 2012, 2011, 2010, 2009]
def month_ranges
years.flat_map { |y|
if y == Date.today.year
start = Date.today.month
else
start = 12
end
start.downto(1).map { |m| Date.new(y,m,1)..Date.new(y,m,-1) }
}
end
以前面问题中要求的格式提供结果:
require 'date'
years = [2013, 2012, 2011, 2010, 2009]
years.map(&:to_s).product([*'-01'..'-12'].reverse).map(&:join).select{|d| d <= Date.today.to_s[0..-3]}
=>[2013-092013-08,…,2009-01]以前面问题中要求的格式提供结果:
require 'date'
years = [2013, 2012, 2011, 2010, 2009]
years.map(&:to_s).product([*'-01'..'-12'].reverse).map(&:join).select{|d| d <= Date.today.to_s[0..-3]}
=>[2013-092013-08,…,2009-01]@年或def年。。end@years或者十年。。End您显示的输出是Rails正在做的,对吗?我想这是Ruby类的输出?在Ruby 2.0.0中,我期望在早期版本中,从docs,Date.new2001,2,3=>您显示的输出是Rails正在做的,对吗?不知道Rails?我想这是Ruby类的输出?在Ruby 2.0.0中,我期望在早期版本中,来自文档,日期:new2001,2,3=>