である私は、次のタスクを持ついくつかの問題があります。結果は2016-02-08
でなければなりません
ルビー - 日付取得 - 指定した年、月、weeknumber日
Year: 2016
Month: 2
Week of Month: 2
Day of week: Monday
:考える
を以下のパラメータです。
これを取得する方法はありますか?事前
である私は、次のタスクを持ついくつかの問題があります。結果は2016-02-08
でなければなりません
ルビー - 日付取得 - 指定した年、月、weeknumber日
Year: 2016
Month: 2
Week of Month: 2
Day of week: Monday
:考える
を以下のパラメータです。
これを取得する方法はありますか?事前
だろう。使用される値は、それが日曜日に始まる場合週は年と月でありmonth = 2,
week_number = 2
とyear = 2016
month = 2
year = 2016
week_number = 2
FIRST_DAY = 1 #first day of every month
day = { monday: 1, tuesday: 2, wednesday: 3, thursday: 4, friday: 5, saturday: 6, sunday: 7}
first_wk_of_month = Date.new(year, month, FIRST_DAY).cweek #=> 05
date_week_num = first_wk_of_month + (week_number - 1) #=> 06
date = Date.commercial(year, date_week_num, day[:monday]).to_s # 2016-02-08
は週に1日限り低くすることができ、質問に供給しました。これを考慮して、
first_wk_of_month
は、問題の月が始まる年(1〜52)の週番号を見つけます。
date_week_num
は、その日付が属する年の実際の週番号を検出します。 2月の2週目であるこのシナリオでは、
がDate.commercial
にdate_week_num
とday
を渡す今年の6週を表す6
を返す私たちはdate
は数日でそれをテストし、正常に動作見つけることができます。おそらく変数名を変更することができます。これがあなたのチャレンジを解決することを願っています。
で
おかげでこれを行う方法は、あなたはこのコードを使用することができます
weekday_index = {monday: 1, tuesday: 2, wednesday: 3, thursday: 4, friday: 5, saturday: 6, sunday: 7}
day_in_a_week = 7
year = year_param # 2016
month = month_param # 8
week_number = 2
day_of_month = (week_number * days_in_a_week) - (days_in_a_week - weekday_index[:monday])
Date.new(year, month, day_of_month).to_s
こんにちは。迅速な対応をありがとう。月が3月(3月)に設定されている場合: 年:2016 月:3 月の週:2 曜日:月曜日 日曜日月曜日8日しかし7でなければならない –
非常に黒いエニグありがとう! これは非常にうまく動作します! –
問題はありません、喜んで助けてください! –