Convert Time from one time zone to another in Rails
Although this is an old question, it's worth mentioning something. In a previous reply it's suggested to use a before_filter to set the timezone temporally.
You should never, ever do that because Time.zone stores the information in the thread, and it will probably leak to the next request handled by that thread.
Instead you should use an around_filter to make sure that the Time.zone is reset after the request is complete. Something like:
around_filter :set_time_zone
private
def set_time_zone
old_time_zone = Time.zone
Time.zone = current_user.time_zone if logged_in?
yield
ensure
Time.zone = old_time_zone
end
Read more about this here
Use the in_time_zone method of the DateTime class
Loading development environment (Rails 2.3.2)
>> now = DateTime.now.utc
=> Sun, 06 Sep 2009 22:27:45 +0000
>> now.in_time_zone('Eastern Time (US & Canada)')
=> Sun, 06 Sep 2009 18:27:45 EDT -04:00
>> quit
So for your particular example
Annotation.last.created_at.in_time_zone('Eastern Time (US & Canada)')