我想根据日期的用户输入创建一个日期数组。目标是获取用户输入的日期并生成16个日期对(按顺序)。
我能够想出如何生成开始日期并将它们放在一个数组中,但我无法弄清楚如何获取该数组并进一步将它们分解为子数组(日期对)。
以下是我用来生成开始日期的代码:
@date_pairs = (@input_date-105..@input_date).step(7).to_a.reverse
我尝试按以下方式创建子数组:
@date_pairs = (@input_date-105..@input_date).step(7).to_a.reverse.each { |x| Array.new(x, x-6)}
但是我收到以下错误:没有将Date隐式转换为整数
以下是我希望得到的一个例子:
@input_date = 6/15/2016
@date_pairs = [[6/15/2016, 6/9/2016], [6/8/2016, 6/2/2016], [6/1/2016, 5/24/2016].....]
目标是能够遍历@date_pairs,访问子数组中的每个值。
我计划使用此概念创建其他类型的日期对(即按月,年等分隔的日期对)
谢谢!
答案 0 :(得分:1)
如果不知道你@input_date
的样子,我很难确定,但我认为你真的很亲近。您可能会收到该错误,因为您的x
是DateTime
的一个实例,并且您正试图从中减去6
(Integer
)。也许尝试减去6.days
,如下:
@date_pairs = (@input_date-105..@input_date).step(7).to_a.reverse.map { |x| [x, x-6.days] }
另请注意,Array.new(5, 6)
会产生[6, 6, 6, 6, 6]
- 可能不是您想要的。
希望有所帮助!