In my controller, I would like to validate wether the time is before or after 10:30 a given day. The only way I''ve found so far is convert back from time to string to integer and so forth using the strftime-method, which seems a bit overkill. Somewhere along the lines of Time.now => 10:30, although I can''t seem to find the proper methods to accomplish this. Is there such a simple way to do this seemlingly mundane task? Best regards, Gustav -- 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
One way that seems to work ok is using seconds:
@time = Time.new
if (@time.hour * 60 + @time.min) * 60 > 37800 # 10:30 in seconds
from 00:00
@time += (60 * 60 * 24) # add another weekday
@weekday = @time.wday
else
@weekday = @time.wday
end
But still... seems a bit clumsy ;)
--
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Another issue I''m struggling with regarding Time is that I
can''t seem to
find a way to search in my database based on time.
I have an arrival time:
@arrival_time = Time.parse("11:30")
and a flights-table with an arrival_time column, created with :time in
migrations. I can''t seem to find a way to search for "arrival_time
earlier than @arrival_time". Obviously my second-workaround won''t
cut it
here.
Anyone had the same problem and/or have a possible a solution?
--
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
For your original problem, @time > @time.change(:hour => 10, :min => 30) might be a bit more readable that what you''ve got. Also look into using method like advance (or in rails 2.0 just time = time + 1.day) as those are clever enough to get things right when days aren''t 24 hours long ( when DST kicks in and so on) On Mar 30, 12:26 pm, Gu stav <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Another issue I''m struggling with regarding Time is that I can''t seem to > find a way to search in my database based on time. > > I have an arrival time: > > @arrival_time = Time.parse("11:30") > > and a flights-table with an arrival_time column, created with :time in > migrations. I can''t seem to find a way to search for "arrival_time > earlier than @arrival_time". Obviously my second-workaround won''t cut it > here. >Does everything just work as expected here ? Flights.find :all, :condition => [''arrival_time < ?'',@arrival_time] seems to work for me. Fred> Anyone had the same problem and/or have a possible a solution? > -- > Posted viahttp://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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Mar 30, 2008, at 8:03 AM, Frederick Cheung wrote:> > For your original problem, @time > @time.change(:hour => 10, :min => > 30) might be a bit more readable that what you''ve got. Also look into > using method like advance (or in rails 2.0 just time = time + 1.day) > as those are clever enough to get things right when days aren''t 24 > hours long ( when DST kicks in and so on)The cleverness is not in 1.day, but in the #ago and #since methods. 1.day.since(@time) would give you a 23, 24, or 25 hour change depending on whether you cross a DST boundary in either direction. -Rob Rob Biedenharn http://agileconsultingllc.com Rob-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org> On Mar 30, 12:26 pm, Gu stav <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote: >> Another issue I''m struggling with regarding Time is that I can''t >> seem to >> find a way to search in my database based on time. >> >> I have an arrival time: >> >> @arrival_time = Time.parse("11:30") >> >> and a flights-table with an arrival_time column, created with :time >> in >> migrations. I can''t seem to find a way to search for "arrival_time >> earlier than @arrival_time". Obviously my second-workaround won''t >> cut it >> here. >> > Does everything just work as expected here ? > Flights.find :all, :condition => [''arrival_time < ?'',@arrival_time] > seems to work for me. > > Fred >> Anyone had the same problem and/or have a possible a solution?--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 30 Mar 2008, at 14:42, Rob Biedenharn wrote:> > On Mar 30, 2008, at 8:03 AM, Frederick Cheung wrote: >> >> For your original problem, @time > @time.change(:hour => 10, :min => >> 30) might be a bit more readable that what you''ve got. Also look into >> using method like advance (or in rails 2.0 just time = time + 1.day) >> as those are clever enough to get things right when days aren''t 24 >> hours long ( when DST kicks in and so on) > > The cleverness is not in 1.day, but in the #ago and #since methods. > 1.day.since(@time) would give you a 23, 24, or 25 hour change > depending on whether you cross a DST boundary in either direction.Actually in 2.0, 1.day is clever and those do work (happily today is the day where DST kicked in here so it''s easy to test!). 1.day (and 1.month etc...) used to just return some fixed number of seconds, but they are now instances of ActiveSupport::Duration, which know how to handle all the various cases. Fred> -Rob > > Rob Biedenharn http://agileconsultingllc.com > Rob-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org > >> On Mar 30, 12:26 pm, Gu stav <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> >> wrote: >>> Another issue I''m struggling with regarding Time is that I can''t >>> seem to >>> find a way to search in my database based on time. >>> >>> I have an arrival time: >>> >>> @arrival_time = Time.parse("11:30") >>> >>> and a flights-table with an arrival_time column, created with :time >>> in >>> migrations. I can''t seem to find a way to search for "arrival_time >>> earlier than @arrival_time". Obviously my second-workaround won''t >>> cut it >>> here. >>> >> Does everything just work as expected here ? >> Flights.find :all, :condition => [''arrival_time < ?'',@arrival_time] >> seems to work for me. >> >> Fred >>> Anyone had the same problem and/or have a possible a solution? > > > > >--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I''m actually having the same problem right now, since ruby
doesn''t
have a class that deals with time, without a date attached to it.
I''ve been playing around with rolling my own sudo Time class that just
handles hours, minutes, and seconds. Along those lines, I''m trying it
with storing the data as an integer in the database as seconds in the
day. So, for example, 1AM would be 3600.
Then I will use composed_of to instantiate that integer into my sudo
Time object. Playing around, it seems to work. I can define a to_s
method on the sudo Time class and it will print it out in time, then I
don''t have to have all those strftime method calls in my views. By
having a to_i method, ar seems to convert that into an integer
correctly when saving.
The other alternative is to convert that Time object into something
that the database understands for searches and then again in the
views. But, it sounds like you were already doing that.
Maybe a monkeypatch on the Time class would help so you don''t have to
remember the strftime all the time.
class Time
def to_time
self.strftime("%R")
end
end
time = Time.parse("10:30")
conditions = ["arrival_time < ''#{time.to_time}''"]
if time
Although, perhaps it would be better to just create a new class that
simply stores the Time object in it and then calls the strftime on
to_s, inspect, etc... Then use composed_of in your model.
Hope that helps a little bit, I would be interested to hear what you
decide to do. If I come up with anything I think is good, I''d be
happy to share it.
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
> By > having a to_i method, ar seems to convert that into an integer > correctly when saving. >Actually, I don''t think it is calling to_i, its calling what I map that to in my composed_of block. First, time I''ve used composed_of, its pretty neat. --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---