Я хочу создать массив дат, используя код нижеInvalid ошибка даты при разборе
arr = []
for i in (1..31) do
arr << Date.new(2014, 9, i)
end
Я получаю сообщение об ошибке «Invalid даты». Есть ли способ разрешить это?
Я хочу создать массив дат, используя код нижеInvalid ошибка даты при разборе
arr = []
for i in (1..31) do
arr << Date.new(2014, 9, i)
end
Я получаю сообщение об ошибке «Invalid даты». Есть ли способ разрешить это?
Есть ли способ решить эту проблему?
Вы могли бы заменить 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
никогда не знал об отрицательном в 'Date. new() '. +1 для справки в последний день. –
Обратите внимание также, что 'Date.new (2014, 9, -1) == Date.new (2014, 10, 1) -1 => true'. –
вы могли бы написать:
arr = (Date.new(2014,9,1)..Date.new(2014,9,30)).to_a
или без выходных дней:
arr = (Date.new(2014,9)...Date.new(2014,10)).to_a
сентября в течение 30 дней, а не 31 – Stefan
@mode_x: измените эту строку 'for i in (1..31) do' to' for i in (1 ... 31) do' – anusha