2016-09-29 56 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月的第二個星期就返回6代表年份

薪火date_week_numdayDate.commercial的第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

嗨肖恩。感謝您的快速響應。這是正確的,如果月份從星期一開始爲1.如果我將參數設置爲月份編號3(March): 年份:2016 月份:3 本週一周:2 星期幾:星期一 day_of_month = 8但應該是7 –