cannot store correct Time in timezone

50 views
Skip to first unread message

Erwin

unread,
Dec 3, 2012, 6:10:34 AM12/3/12
to rubyonra...@googlegroups.com
I am storing a Time record w a timezone like :       an event at 9:30 in Paris time    

(rdb:1)  Time.zone = "Europe/Paris"
"Europe/Paris"
(rdb:1) Time.new(2012, 12, 3, 9, 30, 0).in_time_zone("Europe/Paris")
Mon, 03 Dec 2012 09:30:00 CET +01:00

Now I want to store another event occurring also at 9:30 but in London time
/London"
(rdb:1) Time.new(2012, 12, 3, 9, 30, 0).in_time_zone("Europe/London")
Mon, 03 Dec 2012 08:30:00 GMT +00:00

which is wrong ....  I want this event at 9:30 GMT !!

what's wrong there ?
thanks for feedback

Norbert Melzer

unread,
Dec 3, 2012, 6:21:01 AM12/3/12
to rubyonra...@googlegroups.com

Time. New uses the default system timezone when no one is given, so u say that you want 9:30 of your systems timezone in GMT, which is probably 8:30 GMT, depending on your local time zone.

You have to add the corresponding parameter to Time. New. Take a look at its documentation.

--
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 rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/KbjGqEvgFW0J.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Erwin

unread,
Dec 3, 2012, 9:36:50 AM12/3/12
to rubyonra...@googlegroups.com
Thanks Norbert,  my issue is that I don't see how to do that :

As per the doc I can defined the time_zone to be used for a specific block

(rdb:1) Time.use_zone("Europe/London"){ Time.now.in_time_zone }
Mon, 03 Dec 2012 14:33:24 GMT +00:00

(rdb:1) Time.use_zone("Europe/Paris"){ Time.now.in_time_zone }
Mon, 03 Dec 2012 15:33:41 CET +01:00

This is fine with Time.now , but not with a Time.new ...

(rdb:1) Time.use_zone("Europe/London"){ Time.new(2012, 12, 3, 9, 30, 0) }
2012-12-03 09:30:00 +0100

(rdb:1) Time.use_zone("Europe/Paris"){ Time.new(2012, 12, 3, 9, 30, 0) }
2012-12-03 09:30:00 +0100

I cannot believe that there is no way to do the same for Time.new .. ?

Erwin

unread,
Dec 3, 2012, 9:39:04 AM12/3/12
to rubyonra...@googlegroups.com
sorry I pasted the wrong test , but the result is the same 

 Time.use_zone("Europe/London"){ Time.new(2012, 12, 3, 9, 30, 0).in_time_zone }
Mon, 03 Dec 2012 08:30:00 GMT +00:00   # => I want 9:30 GMT there

(rdb:1)  Time.use_zone("Europe/Paris"){ Time.new(2012, 12, 3, 9, 30, 0).in_time_zone }
Mon, 03 Dec 2012 09:30:00 CET +01:00


Erwin

unread,
Dec 3, 2012, 10:07:23 AM12/3/12
to rubyonra...@googlegroups.com
[SOLVED]   Time.zone.local(2012, 12, 3, 9, 30, 0)  inside the  TIme.use_zone did it ...



1.9.3p194 :011 > Time.use_zone("Europe/London"){ Time.zone.local(2012, 12, 3, 9, 30, 0) }
 => Mon, 03 Dec 2012 09:30:00 GMT +00:00 

1.9.3p194 :012 > Time.use_zone("Europe/Paris"){ Time.zone.local(2012, 12, 3, 9, 30, 0) }
 => Mon, 03 Dec 2012 09:30:00 CET +01:00 

1.9.3p194 :013 >  Time.use_zone("Asia/Singapore"){ Time.zone.local(2012, 12, 3, 9, 30, 0) }
 => Mon, 03 Dec 2012 09:30:00 SGT +08:00

Norbert Melzer

unread,
Dec 3, 2012, 3:21:12 PM12/3/12
to rubyonra...@googlegroups.com
Time.new has a parameter for the timezone offset, use it, it would make your code more clean…

http://www.ruby-doc.org/core-1.9.3/Time.html

2012/12/3 Erwin <yves_...@mac.com>

[SOLVED]   Time.zone.local(2012, 12, 3, 9, 30, 0)  inside the  TIme.use_zone did it ...



1.9.3p194 :011 > Time.use_zone("Europe/London"){ Time.zone.local(2012, 12, 3, 9, 30, 0) }
 => Mon, 03 Dec 2012 09:30:00 GMT +00:00
Time.new(2012, 12, 3, 9, 30, 0, "+00:00")
 

1.9.3p194 :012 > Time.use_zone("Europe/Paris"){ Time.zone.local(2012, 12, 3, 9, 30, 0) }
 => Mon, 03 Dec 2012 09:30:00 CET +01:00 
Time.new(2012, 12, 3, 9, 30, 0, "+01:00") 

1.9.3p194 :013 >  Time.use_zone("Asia/Singapore"){ Time.zone.local(2012, 12, 3, 9, 30, 0) }
 => Mon, 03 Dec 2012 09:30:00 SGT +08:00
Time.new(2012, 12, 3, 9, 30, 0, "+08:00") 

Reply all
Reply to author
Forward
0 new messages