Time range help

M

Mike Hamilton

I have 2 time objects and want to iterate over them by day. I figured
out that I can do:
a = Time.mktime(2007,5,1,0,0,0)
b = Time.mktime(2007,5,7,0,0,0)
(a..b).each { |val|
code goes here
}
but when I do that it iterates over seconds. Does anyone have a
suggestion on how to iterate over a different period when using Time
objects?
 
A

Axel Etzold

Try this:


t1 = Time.mktime(2001,3,15,21,30,15)
t2= Time.mktime(2001,3,19,21,30,15)
(t1.day..t2.day).each_with_index{|x,i|
puts "Day #{i} was ... #{x}"
}

# ... and ...

p t1.methods

gives ... for months : t1.mon etc ...


Best regards,

Axel
 
M

Mike Hamilton

Glen said:
Does it have to be a time object? Date has some methods that will do
what
you want without much if any hassle.




--
"Hey brother christian with your high and mighty errand, Your actions
speak
so loud, I can't hear a word you're saying."

-Greg Graffin (Bad Religion)
Well - I know how to do it with a date object but the objects I'm using
are already Time objects. The actual problem is that the dates that I'm
iterating over are entered in a local timezone and then converted to
gmtime for a SQL query. All the date values are stored in the database
in gmtime, so in order to run the query I have to have the time
included. That's why iterating over the time object would be ideal, so
that I can include the appropriate gmtime adjustment in the query
values.
 
R

Rob Biedenharn

Well - I know how to do it with a date object but the objects I'm
using
are already Time objects. The actual problem is that the dates that
I'm
iterating over are entered in a local timezone and then converted to
gmtime for a SQL query. All the date values are stored in the database
in gmtime, so in order to run the query I have to have the time
included. That's why iterating over the time object would be ideal, so
that I can include the appropriate gmtime adjustment in the query
values.

Why do you need to iterate over them? If these values are already in
the database, can't you just use:

:conditions => { :some_gmt_datetime_column => a..b }

which becomes a where clause like "some_gmt_datetime_column BETWEEN
'2007-05-01' AND '2007-05-07'" (or whatever a.to_s:)db) gives)

If this doesn't help, perhaps you could explain your query a bit more
and where you think the iteration is needed.

-Rob

Rob Biedenharn http://agileconsultingllc.com
(e-mail address removed)
 
M

Mike Hamilton

Rob said:
Why do you need to iterate over them? If these values are already in
the database, can't you just use:

:conditions => { :some_gmt_datetime_column => a..b }

which becomes a where clause like "some_gmt_datetime_column BETWEEN
'2007-05-01' AND '2007-05-07'" (or whatever a.to_s:)db) gives)

If this doesn't help, perhaps you could explain your query a bit more
and where you think the iteration is needed.

-Rob

Rob Biedenharn http://agileconsultingllc.com
(e-mail address removed)

The challenge is that the database is just something I'm reporting off
of and isn't something that I designed or built in Rails so I'm doing a
lot of raw SQL. I did manage to find a way around it by building a date
range off of the time objects, iterating over that, and keeping the time
values constant by building them off of the Time objects as well. Works
well enough for what I'm trying to do!
Thanks for the input!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,252
Messages
2,571,267
Members
47,908
Latest member
MagdalenaR

Latest Threads

Top