2011-03-30 35 views

回答

23
require 'time' 

p Time.zone_offset('EST') #=> -18000 #(-5*60*60) 
+10

Time.zone.utc_offset保存了我的日子=) – 2011-03-30 17:36:26

+1

不要忘记,为了这个工作正常,你必须设置'config.time_zone ='Berlin''和'config.active_record.default_timezone ='Berlin''在application.rb(在我的情况下,没有,它没有反映正确的夏令时调整) – weltschmerz 2013-07-16 13:21:04

+1

请注意:https://github.com/rails/rails/issues/7297 – Valentin 2014-07-24 14:32:13

5

如果你有一个ActiveSupport::TimeWithZone对象,你可以打电话time_zone.utc_offset就可以了。所以,例如,Time.zone.now.time_zone.utc_offset

编辑:你也可以在普通的Time对象上使用gmt_offset实例方法。

9
my_date_time = DateTime.new(2011, 3, 29, 20) 
#=> Tue, 29 Mar 2011 20:00:00 +0000 

#will return the same time but with another offset 
my_date_time.change(:offset => "+0100") 
#=> Tue, 29 Mar 2011 20:00:00 +0100 

#will return time for other offset 
my_date_time.in_time_zone(-1) 
#=> Tue, 29 Mar 2011 19:00:00 -0100 
+0

这是我想要的第一个地方,一个-N抵消! – 2013-10-03 03:42:13

2

刚刚在这里完成循环,现在我使用:

@course.start.utc_offset/60/60为了得到所需的小时#。 jquery倒计时在他们的timezone参数中只需要-5或+3。

欢迎您的光临。

15

如果你需要采取日光节约时间考虑,你可以使用这样的事情:

Time.now.in_time_zone('America/New_York').utc_offset 
+0

谢谢。这给了我'Time.zone.utc_offset'没有的正确的偏移量。 – 2015-08-27 12:55:51

+0

不适用于Ruby 2.1.8 ... – 2016-10-17 15:15:26

+0

@GregDubicki它在Rails的ActiveSupport :: TimeWithZone中 – Dorian 2016-12-02 18:24:58

3

我用Time.zone.utc_offset/1.hour得到的小时偏移量(例如:-8旧金山)

相关问题