铁轨中的周数计算

时间:2013-10-29 21:24:13

标签: ruby-on-rails-4

这是我在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周寻找。)

1 个答案:

答案 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