这是我在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月1日之前发生,之后会在2015年第27周寻找。)
答案 0 :(得分: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