解析时无效的日期错误

时间:2014-09-09 08:11:39

标签: ruby

我想使用下面的代码创建一个日期数组

arr = []
for i in (1..31) do
  arr << Date.new(2014, 9, i)
end

我收到“无效日期”错误。有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:6)

  

有没有办法解决这个问题?

您可以将31替换为30,但还有另一种方式可以引用最后一天。许多Date方法接受负面参数来倒数:

first_day = Date.new(2014, 9, 1) #=> #<Date: 2014-09-01 ((2456902j,0s,0n),+0s,2299161j)>
last_day = Date.new(2014, 9, -1) #=> #<Date: 2014-09-30 ((2456931j,0s,0n),+0s,2299161j)>

您可以使用它来创建Range

september_range = first_day..last_day

Array

september_days = (first_day..last_day).to_a

答案 1 :(得分:1)

你可以写:

arr = (Date.new(2014,9,1)..Date.new(2014,9,30)).to_a

或没有天:

arr = (Date.new(2014,9)...Date.new(2014,10)).to_a