Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Ruby中创建从当前月份开始的日期范围数组?_Ruby On Rails_Ruby_Arrays_Ruby On Rails 3 - Fatal编程技术网

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=>