cannot store correct Time in timezone

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

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.

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 … ?

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

[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

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

[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”)