# TimeRange 'this weekend'

How would one calculate 'this weekend'?

In my event model I have:

def self.dates_for_time_range(range)     case range       when 'today' then [Date.today, Date.today]       when 'tomorrow' then [Date.tomorrow, Date.tomorrow]       when 'this_week' then [Date.today, 1.week.from_now.to_date]       else raise ArgumentError, "Incorrect time range: #{range}"     end   end

Which works perfectly, but trying to figure out what 'this weekend' has proven to be a bit more difficult.

I'm sure Fred will have a better way of attacking this but something like this should work:

[(1.week.from_now.beginning_of_week-2.days).to_date, 1.week.from_now.beginning_of_week.to_date]

Thanks alot! This works exactly right. I modified the -2 to -3 to include Friday. This is actually very close to what I had tried, but I did not have the parenthesis correct. Too bad I wasted a whole day before trying the forum.

Best regards,

Kyle

I'm sure Fred will have a better way of attacking this but something like this should work:

[(1.week.from_now.beginning_of_week-2.days).to_date, 1.week.from_now.beginning_of_week.to_date]

Well there's the slightly shorter [Date::today.monday + 5, Date::today.monday + 7] (and you don't have to worry about whether that will do funny things
when the clocks go back and what not).

Fred

Probably overkill for this simple question but chronic so cool, I thought I would mention it. Chronic is an incredible time parsing library that makes parsing natural languages into time a sinch. 'next weekend' is only the tip of the iceberg.

http://chronic.rubyforge.org/

Chronic.parse('tomorrow')     #=> Mon Aug 28 12:00:00 PDT 2006

Chronic.parse('monday', :context => :past)     #=> Mon Aug 21 12:00:00 PDT 2006