On May 20, 2009, at 4:55 PM, Tyler Knappe wrote:

>
> I'm creating a calendar of sorts which maps events.
>
> For each event, I know its start and end date/time.  I also know the
> current date and time.  What I need to be able to do is calculate the
> start of the week, regardless of the day of the week.
>
> So, if it is Wednesday and I want to populate my Calendar from  
> Monday -
> Sunday with the events, I need to know the date of Monday to start.   
> To
> compare absolute days I've converted them to Ruby epoch with the  
> idea of
> comparing each day (84600 seconds) versus the end date.  If the day is
> greater than the end date, I then check the hours of the day to see on
> what hour the event occurred.
>

Why won't this work?

 >> t = Time.now
=> Wed May 20 18:23:37 -0700 2009
 >> t.beginning_of_week
=> Mon May 18 00:00:00 -0700 2009

There are all kinds of fun methods in the Time class...

 >> t.beginning_of_day
=> Wed May 20 00:00:00 -0700 2009
 >> t.end_of_day
=> Wed May 20 23:59:59 -0700 2009
 >> t.tomorrow
=> Thu May 21 18:23:37 -0700 2009
 >> t.yesterday
=> Tue May 19 18:23:37 -0700 2009
 >> t.beginning_of_month
=> Fri May 01 00:00:00 -0700 2009
 >> t.last_month
=> Mon Apr 20 18:23:37 -0700 2009

The one thing to double check is that at least at one point the  
"month" methods were 30-day based...

-philip




> It sounds convoluted, but I'm not sure of a better method.
>
> Code:
>
> This is wrong in that I'm using Date.today.to_time.to_i, rather than  
> the
> date of the Monday of the week.
>
> <% for j in 0..6 do %>
>                <%# check date first if we are past day, then check
> hour%>
>                <% for i in 0..23 do %>
>                        <th><%=h i %>:00</th>
>
>                        <% if (j * 86400) + Date.today.to_time.to_i >
> (@lab.end_date.to_time.to_i + ((@lab.end_time.strftime("%M").to_i) *
> 3600)
>                                +  
> ((@lab.end_time.strftime("%S").to_i) *
> 60))  %>
>                                <tr>
>                                <% if i >
> @lab.end_time.strftime("%M").to_i # because db stores the hour in  
> minute
> field (as pulled by ruby) use %M %>
>                                        <th> Available </th>
>                                <% else %>
>                                        <th> Checked Out </th>
>                                <% end %>
>                        <% end %>
>                <% else %>
>                                <th> Checked Out </th>
>                <% end %>
>        <% end %>
> -- 
> Posted via http://www.ruby-forum.com/.
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to