Подтвердить что ты не робот

Как я могу получить смещение utc в Rails?

Мне нужно смещение utc из указанного часового пояса.

4b9b3361

Ответ 1

require 'time'

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

Ответ 2

Если вам нужно принять во внимание летнее время, вы можете использовать что-то вроде этого:

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

Ответ 3

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

Ответ 4

Если у вас есть объект ActiveSupport::TimeWithZone, вы можете называть его time_zone.utc_offset. Так, например, Time.zone.now.time_zone.utc_offset.

EDIT: вы также можете использовать метод экземпляра gmt_offset для обычных объектов Time.

Ответ 5

Если вы храните часовой пояс пользователя в виде строки Time.zone.name, например 'Eastern Time (US & Canada)', как указано в http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html, и хотите получить смещение часового пояса, вы можете сделать это:

ActiveSupport::TimeZone.new(user.time_zone).utc_offset / 3600
# => -5

Ответ 6

Я использую Time.zone.utc_offset / 1.hour для получения смещения в часах (например: -8 для Сан-Франциско)

Ответ 7

Чтобы закончить цикл здесь, прямо сейчас я использую:

@course.start.utc_offset/60/60, чтобы получить необходимое количество часов. Для обратного отсчета Jquery требуется только -5 или +3 в аргументе timezone.

Ваш приветственный google.

Ответ 8

Time.now.in_time_zone('Europe/London').formatted_offset
# => "+01:00"

Для строки, возможно, более пригодной для использования...