我想使用下面的代码创建一个日期数组
arr = []
for i in (1..31) do
arr << Date.new(2014, 9, i)
end
我收到“无效日期”错误。有办法解决这个问题吗?
答案 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