Как получить слабые дни конкретной недели для выбранного месяца и года в рельсах?

Я хочу получить все слабые дни конкретной недели, для выбранного года и месяца. Я получаю данные как year= 2015, month= 6 ,and weeknumber = 2 в контроллере. как получить дни недели для этих конкретных данных в рельсах?

я хочу такой метод, который выводит дни недели, беря номер недели. но номер недели для этого месяца должен быть меньше или равен пяти. код ниже выводит номер недели за весь год.

require 'date'

def week_dates( week_num )
year = Time.now.year
week_start = Date.commercial( year, week_num, 1 )
week_end = Date.commercial( year, week_num, 7 )
week_start.strftime( "%m/%d/%y" ) + ' - ' +        week_end.strftime("%m/%d/%y" )
end

puts week_dates(22)

1 ответ

Поскольку вы используете рельсы, у вас есть активные методы поддержки для beginning_of_week а также end_of_week задокументировано здесь вы можете сделать это

# first week in June
d = Date.new(2015,6, 1)
# => Mon, 01 Jun 2015

# add a week to get the second week
d += 1.week
# => Mon, 08 Jun 2015

(d.beginning_of_week..d.end_of_week).to_a
#=> [Mon, 08 Jun 2015, Tue, 09 Jun 2015, Wed, 10 Jun 2015, Thu, 11 Jun 2015, Fri, 12 Jun 2015, Sat, 13 Jun 2015, Sun, 14 Jun 2015]

Если вы хотите, чтобы ваша неделя начиналась в воскресенье, вы можете сделать это, пропустив день начала недели:

(d.beginning_of_week(:sunday)..d.end_of_week(:sunday)).to_a
#=> [Sun, 31 May 2015, Mon, 01 Jun 2015, Tue, 02 Jun 2015, Wed, 03 Jun 2015, Thu, 04 Jun 2015, Fri, 05 Jun 2015, Sat, 06 Jun 2015]
Другие вопросы по тегам