2013-10-29 50 views
1

這是我在Stack上的第一個問題。使用軌道計算週數

我正在一個很大程度上依賴於搜索和查找整週住宿的預訂網站上工作。大多數用戶搜索將在一年的週數上,例如。 7月第一週27周。

用戶在搜索住宿時不需要填寫年份是非常重要的,因此我們從用戶那裏得到的唯一信息就是週數。

我怎樣才能得到用戶給出的一週,考慮到它始終必須是下週即將發生的那週數? 。

(有這一個疑難雜症我可以做這樣的事情讓即將到來的第27周:

def week 
    week = 27 
    Date.commercial(Date.current.year + 1, week, 1) # gives the first day of the week 
end 

但是,這隻會是正確的,直到一月的1,之後,它要尋找爲2015年第27周。)

+0

歡迎來到SO!不是答案,而是相關的:在你的表格中,你可以使用'week_field' [參考](http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-week_field)和'week_field_tag好幫手。剛剛瞭解了他們。也許在你的搜索表單中有這樣的幫手,你根本不需要把「27」變成一週。 –

+0

另一個說明,因爲我偶然發現一些周選擇器助手:[周選擇器](https://github.com/morshedalam/week-picker)和[kalendae](https://github.com/ChiperSoft/Kalendae )。 –

回答

1

您可以將當前日曆周與Date.current.cweek(Reference)與您的電話號碼進行比較。

require 'active_support/core_ext' # Already included in Rails 

def calendar_week(week) 
    now = Date.current 
    year = now.cweek < week ? now.year : now.year + 1 
    Date.commercial(year, week, 1) 
end 

p calendar_week(49) 
# => Mon, 02 Dec 2013 

p calendar_week(1) 
# => Mon, 30 Dec 2013 # don't know if that's the way calendar weeks are counted 

p calendar_week(27) 
# => Mon, 30 Jun 2014 
+0

謝謝Thomas,正是我在找的東西。在星期的領域也會提供小費。 – swelet