1

これはスタックに関する私の最初の質問です。

私は、丸 1 週間の宿泊施設を検索して見つけることに大きく依存している予約サイトに取り組んでいます。ほとんどのユーザー検索は、その年の週番号で行われます。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 週を探します。)

4

1 に答える 1

1

現在のカレンダーの週をDate.current.cweek (参照)で自分の数字と比較できます。

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
于 2013-10-29T21:56:06.013 に答える