У меня есть диапазон с start_date
, end_date
, и я хочу получить один и тот же день каждого месяца для всего диапазона, поэтому здесь, начиная с 30 января, я должен получать 30-е число каждого месяца:
start_date = Date.new(2019, 1, 30)
end_date = Date.new(2019, 12, 30)
range = (start_date...end_date)
dates = range.step(30).map(&:to_date)
dates
#=> [Wed, 30 Jan 2019,
# Fri, 01 Mar 2019,
# Sun, 31 Mar 2019,
# Tue, 30 Apr 2019,
# Thu, 30 May 2019,
# Sat, 29 Jun 2019,
# Mon, 29 Jul 2019,
# Wed, 28 Aug 2019,
# Fri, 27 Sep 2019,
# Sun, 27 Oct 2019,
# Tue, 26 Nov 2019,
# Thu, 26 Dec 2019]
Я использовал что-то подобное для weeks
, но с месяцами, когда вы, например, попадаете в февраль, это, конечно, дает сбой, поэтому мне пришлось бы перейти на 28-е.
Я знаюЯ мог бы зациклить и посмотреть на месяц и внести коррективы на основе start_date
, но это кажется плохой идеей.