Time range help

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?

···

--
Posted via http://www.ruby-forum.com/.

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

···

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?

--
Posted via http://www.ruby-forum.com/\.

--
Psssst! Schon vom neuen GMX MultiMessenger gehört?
Der kanns mit allen: http://www.gmx.net/de/go/multimessenger

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

···

On 5/14/07, Mike Hamilton <mikehamiltonca@gmail.com> wrote:

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?

--
Posted via http://www.ruby-forum.com/\.

--
"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)

Glen Holcomb wrote:

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

objects?

--
Posted via http://www.ruby-forum.com/\.

--
"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.

···

On 5/14/07, Mike Hamilton <mikehamiltonca@gmail.com> wrote:

--
Posted via http://www.ruby-forum.com/\.

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
Rob@AgileConsultingLLC.com

···

On May 14, 2007, at 4:02 PM, Mike Hamilton wrote:

Glen Holcomb wrote:

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

On 5/14/07, Mike Hamilton <mikehamiltonca@gmail.com> wrote:

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?

--
"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.

Rob Biedenharn wrote:

b = Time.mktime(2007,5,7,0,0,0)

so loud, I can't hear a word you're saying."

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
Rob@AgileConsultingLLC.com

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!

···

On May 14, 2007, at 4:02 PM, Mike Hamilton wrote:

--
Posted via http://www.ruby-forum.com/\.

Cool. I was going to suggest using Time's to_datetime method although that
might not help you so much if you have to put the data back once you've
looked at it.

···

On 5/14/07, Mike Hamilton <mikehamiltonca@gmail.com> wrote:

Rob Biedenharn wrote:
> On May 14, 2007, at 4:02 PM, Mike Hamilton wrote:
>>>> b = Time.mktime(2007,5,7,0,0,0)
>>> so loud, I can't hear a word you're saying."
>> 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
> Rob@AgileConsultingLLC.com

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!

--
Posted via http://www.ruby-forum.com/\.

--
"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)