在ruby的两个日期之间创建一个月的范围

edx*_*edx 11 ruby loops date range

我需要每月创建一个月份的日志文件.因此,我需要在给定范围内的所有[年,月]元组

你如何迭代日期?

如果我每天需要迭代,怎么办呢?

pgu*_*rio 28

例如:

((Date.today - 90)..Date.today).map{|d| [d.year, d.month]}.uniq
#=> [[2012, 12], [2013, 1], [2013, 2], [2013, 3]]
Run Code Online (Sandbox Code Playgroud)

  • 不确定为什么你认为这个傻瓜.许多人感到惊讶的是,在`irb`或'pry`中有一个内置的`Date`类,这是你在'要求'约会'之后得到的'Date`的残缺阴影,而且文档做得很糟糕告诉你何时需要stdlib. (2认同)

edx*_*edx 1

我想出了这个解决方案来生成范围内所有[年,月]元组的列表:

first=[2012,10]
last=[2013,03]
(first[0]..last[0]).to_a.product((1..12).to_a).select{|ym|(first..last).cover?(ym)}
=> [[2012, 10], [2012, 11], [2012, 12], [2013, 1], [2013, 2], [2013, 3]]
Run Code Online (Sandbox Code Playgroud)