2010-12-08 24 views
28

特定の週に作成されたすべてのアイテムを検索し、週番号のパラメータを渡したいと思います。 (created_atは通常のタイムスタンプです)週番号から日付を取得するにはどうすればよいですか?

週番号を指定すると、その特定の週に日付を見つける最も簡単な方法は何ですか? (私はスコープでbeginning_of_weekとend_of_weekを使用すると、週の任意の日付は、行います。)

+0

また、(現在のシステム年を超えて)何年かのデータがあるとします。それ以外の場合は、新しい年の終わり/開始日に面白くなります。 –

+0

そして、あなたが使用したい週番号の定義を言う必要があります(周りにいくつかあります)。 – TToni

+0

範囲をDate.today +/- 6ヶ月にするとこのアプリケーションはうまくいくと思うので、新しい年の問題を回避することができます。 –

答えて

69

あなたはcommercial方法使用して、週の始まりと終わりを表すDateオブジェクトを取得することができます。

week = 41; 

wkBegin = Date.commercial(2010, week, 1) 
wkEnd = Date.commercial(2010, week, 7) 

今すぐあなたの見つけるか:あなたは、「現在の年の特定の週番号」を意味すると仮定すると、

Item.find(:all, :conditions->:create_date=>wkBegin..wkEnd.end_of_day) 
+0

Nice.comは、Date.commercialについて知らなかった – Chowlett

+0

Beeeautiful!ありがとう! –

+0

+1、本当に私はそれについて知りませんでした! – Surya

5

を、次の操作を実行できます。

2.weeks.since(Time.gm(Time.now.year)) 
=> Fri Jan 15 00:00:00 UTC 2010 

上記の1の代わりに(week_number - 1)を入力すると、希望の週に日付が表示されます。

+0

+1、@Chowlettありがとうございました! – Surya