Hello! Is there an easy way to get a time in a particular time zone without calling Time.zone = some_zone ? I store events in UTC in the DB, and I also store a string representation of the time zone as an attribute on the event. What works is to do: Time.zone = event.time_zone start_time = event.start.in_time_zone # and now I have the start time in the appropriate time zone The problem, however, is that Time.zone = event.time_zone sets it across the whole application, as best as I can tell. And I don''t want that!! I could grab the Time.zone value, change it as above, then change it back, but that''s so ugly. What would be wonderful is if there was something like: start_time = event.start.in_time_zone(event.time_zone) *sigh* Anything like that? Any advice? This isn''t an issue with a user''s local time zone, but rather just trying to show a PST time as 8am PST and an EST time as 11am EST even if both are stored as 15:00:00 (in UTC) Thoughts? -Danimal --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Either I''m not understanding what you want, or this is real easy. Let''s say I have a class Event with a field edate, which is stored in UTC:>> e = Event.find(1)=> #<Event id: 1, edate: "2009-03-30 12:00:00">>> e.edate=> Mon, 30 Mar 2009 12:00:00 UTC +00:00>> e.edate.class=> ActiveSupport::TimeWithZone Now Let''s say you want the time in "America New York" zone. First, create a new TimeZone object:>> ze = ActiveSupport::TimeZone.new("Eastern Time (US & Canada)")=> #<ActiveSupport::TimeZone:0xb780fb80 @utc_offset=-18000, @name="Eastern Time (US & Canada)", @tzinfo=#<TZInfo::DataTimezone: America/New_York>> Then:>> e.edate.in_time_zone(ze)=> Mon, 30 Mar 2009 08:00:00 EDT -04:00 So in summary, I think you just need this: local_zone = ActiveSupport::TimeZone.new("name_of_time_zone") local_time = time_in_utc.in_time_zone(local_zone) You will need to see the documentation for TimeZone for the names of all the zones. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Rick, You are _THE MAN!_. Thank you! For some reason, I was getting all confused with all the various Time, Date, TimeZone, TimeWithZone, etc. objects. I hacked together something that worked, but it was a bit more complex than what you had. I didn''t realized that you could pass a TimeZone object to in_time_zone. I''m gonna clean it up according to what you suggested. Whew! Thanks, -Danimal On Apr 7, 9:50 pm, Rick Schumeyer <rschume...-EkmVulN54Sk@public.gmane.org> wrote:> Either I''m not understanding what you want, or this is real easy. > > Let''s say I have a class Event with a field edate, which is stored in > UTC: > > >> e = Event.find(1) > > => #<Event id: 1, edate: "2009-03-30 12:00:00">>> e.edate > > => Mon, 30 Mar 2009 12:00:00 UTC +00:00>> e.edate.class > > => ActiveSupport::TimeWithZone > > Now Let''s say you want the time in "America New York" zone. First, > create a new TimeZone object: > > >> ze = ActiveSupport::TimeZone.new("Eastern Time (US & Canada)") > > => #<ActiveSupport::TimeZone:0xb780fb80 @utc_offset=-18000, > @name="Eastern Time (US & Canada)", @tzinfo=#<TZInfo::DataTimezone: > America/New_York>> > > Then:>> e.edate.in_time_zone(ze) > > => Mon, 30 Mar 2009 08:00:00 EDT -04:00 > > So in summary, I think you just need this: > > local_zone = ActiveSupport::TimeZone.new("name_of_time_zone") > local_time = time_in_utc.in_time_zone(local_zone) > > You will need to see the documentation for TimeZone for the names of > all the zones.--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---