How do I change the zone offset for a time in Ruby on Rails?

ruby, ruby-on-rails

Solution

I'm using Rails 2.0 before they added the code that makes weppos solution work. Here's what I did

# Silly hack, because sometimes the input_date is in the wrong timezone
temp = input_date.to_time.to_a
temp[8] = true
temp[9] = "Eastern Daylight Time"
input_date = Time.local(*temp)

I break the time down into a 10 element array, change the timezone and then convert the array back into a time.

Problem

I have a variable foo that contains a time, lets say 4pm today, but the zone offset is wrong, i.e. it is in the wrong time zone. How do I change the time zone? When I print it I get ``` Fri Jun 26 07:00:00 UTC 2009 ``` So there is no offset, and I would like to set the offset to -4 or Eastern Standard Time. I would expect to be able to just set the offset as a property of the Time object, but that doesn't seem to be available?

Original source