Martin Svalin
Martin Svalin

Reputation: 2267

How do I get a Date from a week number?

I want to find all items created in a given week, and pass in a week number param. (created_at is a normal timestamp.)

Given a week number, what is the easiest way to find a date in that particular week? (Any date in the week will do, as I will use beginning_of_week and end_of_week in the scope.)

Upvotes: 32

Views: 14640

Answers (2)

Jacob Mattison
Jacob Mattison

Reputation: 51052

You can get Date objects representing the beginning and end of your week using the commercial method:

week = 41;

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

Now do your find:

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

Upvotes: 80

Chowlett
Chowlett

Reputation: 46667

Assuming you mean "a given week number in the current year", you can do the following:

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

Substitute (week_number - 1) for the 1 in the above, and you'll get a date in the desired week.

Upvotes: 5

Related Questions