2010-12-08 46 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

你可以代表使用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,您将在所需的星期内得到一个日期。