2011-03-30 12 views

Respuesta

23
require 'time' 

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

Time.zone.utc_offset saved my day =) –

+1

No olvide que para que esto funcione correctamente, debe configurar 'config.time_zone = 'Berlin'' y' config.active_record.default_timezone =' Berlin'' en application.rb (en mi caso, sin eso no reflejó los ajustes de ahorro de luz diurna correctamente) – weltschmerz

+1

Tenga en cuenta esto: https://github.com/rails/rails/issues/7297 – Valentin

5

Si tiene un objeto ActiveSupport::TimeWithZone, puede llamar al time_zone.utc_offset en él. Entonces, por ejemplo, Time.zone.now.time_zone.utc_offset.

EDITAR: También puede usar el método de instancia gmt_offset en objetos normales Time.

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

esto era lo que quería en primer lugar, una compensación -N! –

2

sólo para completar el bucle de aquí, ahora que utilizo:

@course.start.utc_offset/60/60 con el fin de obtener la cantidad de horas necesarias. La cuenta atrás de Jquery solo necesita -5 o +3 en su argumento timezone.

Su bienvenida a google.

15

Si usted necesita tomar el horario de verano en cuenta, se puede usar algo como esto:

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

Gracias. Esto me dio el desplazamiento correcto donde 'Time.zone.utc_offset' no. –

+0

No funciona en ruby ​​2.1.8 ... –

+0

@GregDubicki Está en 'ActiveSupport :: TimeWithZone' de Rails – Dorian

3

utilizo Time.zone.utc_offset/1.hour para obtener el desplazamiento en horas (por ejemplo: -8 para San Francisco)

Cuestiones relacionadas