2016-09-29 14 views

答えて

0

だろう。使用される値は、それが日曜日に始まる場合週は年と月でありmonth = 2,week_number = 2year = 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.commercialdate_week_numdayを渡す今年の6週を表す6を返す私たちはdate
は数日でそれをテストし、正常に動作見つけることができます。おそらく変数名を変更することができます。これがあなたのチャレンジを解決することを願っています。

+0

非常に黒いエニグありがとう! これは非常にうまく動作します! –

+0

問題はありません、喜んで助けてください! –

0

おかげでこれを行う方法は、あなたはこのコードを使用することができます

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 
+0

こんにちは。迅速な対応をありがとう。月が3月(3月)に設定されている場合: 年:2016 月:3 月の週:2 曜日:月曜日 日曜日月曜日8日しかし7でなければならない –

関連する問題