2010-12-08 17 views
28

Я хочу найти все элементы, созданные за данную неделю, и передать в параме номер недели. (created_at - обычная метка времени.)Как получить дату с номера недели?

Учитывая номер недели, какой самый простой способ найти дату в эту конкретную неделю? (любая дата в неделю будет делать, так как я буду использовать beginning_of_week и end_of_week в область.)

+0

Предположим, у вас также есть данные за один год (за текущий текущий системный год), в противном случае все станет интересным к концу/началу каждого нового года. – 2010-12-08 15:51:22

+0

И вам нужно будет указать, какое определение числа неделей вы хотите использовать (вокруг есть несколько). – TToni 2010-12-08 15:52:41

+0

Я думаю, что это приложение будет хорошо, если я позволю диапазону Date.today +/- 6 месяцев, поэтому я могу обойти проблему нового года. – 2010-12-08 15:56:30

ответ

69

Вы можете получить объекты Date, представляющие начало и конец вашей недели, используя commercial метод:

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) 
5

Предполагая, что вы имеете в виду «заданный номер недели в текущем году», вы можете сделать следующее:

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

Замените (week_number - 1) на 1 выше, и вы получите дату на желаемой неделе.

Смежные вопросы