web-dev-qa-db-ja.com

Railsでutcオフセットを取得するにはどうすればよいですか?

指定されたタイムゾーンからのutcオフセットが必要です。

22
Lucas Renan
require 'time'

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

夏時間を考慮する必要がある場合は、次のようなものを使用できます。

Time.now.in_time_zone('America/New_York').utc_offset
32
lee
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
9
fl00r

私が使う Time.zone.utc_offset / 1.hourオフセットを時間単位で取得します(例:-8(サンフランシスコの場合)

5
Dorian

ActiveSupport::TimeWithZoneオブジェクトがある場合は、そのオブジェクトでtime_zone.utc_offsetを呼び出すことができます。したがって、たとえば、Time.zone.now.time_zone.utc_offsetです。

編集:通常のTimeオブジェクトに対してgmt_offsetインスタンスメソッドを使用することもできます。

5
William

http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html で概説されているように、'Eastern Time (US & Canada)'などのTime.zone.name文字列としてユーザーのタイムゾーンを保存している場合=タイムゾーンのオフセットを取得するには、次のようにします。

ActiveSupport::TimeZone.new(user.time_zone).utc_offset / 3600
# => -5
5
timmcliu
Time.now.in_time_zone('Europe/London').formatted_offset
# => "+01:00"

間違いなくより使いやすい文字列の場合...

3
colemerrick

ここでループを完了するために、今私は使用します:

@course.start.utc_offset/60/60必要な時間数を取得するため。 jqueryカウントダウンでは、timezone引数に-5または+3が必要です。

ようこそGoogle。

2
pjammer