with timezones test rails how define ruby-on-rails ruby-on-rails-3 time timezone

ruby on rails - timezones - En Rails, ¿cuál es la mejor manera de crear una hora específica(no ahora) en una zona horaria en particular?



rails time zones (5)

¿Qué le parece usar el * in_time_zone * helper ...

Time.now.in_time_zone(''Sydney'')

Aquí hay una manera, pero ¿se puede pensar en un método más agradable o más "railsy"?

>> Time.use_zone(''Sydney''){ Time.zone.parse(''2011-04-12 2pm'') } => Tue, 12 Apr 2011 14:00:00 EST +10:00


Como se dijo anteriormente, para crear una hora en una zona horaria específica (p. Ej., 4/10/2014 1:30 p. M. Nueva York):

@event.start_time = Time.find_zone(''Eastern Time (US & Canada)'').local(2014,4,10,13,30) => Thu, 10 Apr 2014 13:30:00 EDT -04:00 @event.start_time.utc => 2014-04-10 17:30:00 UTC

Cuando se guarda en su db, se convertirá a UTC (en Postgres al menos si se usa un tipo de marca de tiempo en su migración), y en el acceso futuro se mostrará en relación con la zona horaria de la aplicación establecida en config / application.rb

Para mostrar correctamente la hora local, también almacenamos el nombre de la zona horaria (por ejemplo, ''Hora del este (EE. UU. Y Canadá)'' en nuestra base de datos. Entonces, cuando queremos imprimir el tiempo en nuestros puntos de vista, lo hacemos ...

@event.start_time.in_time_zone(@event.timezone) => Thu, 10 Apr 2014 13:30:00 EDT -04:00

Para obtener la zona horaria abreviada (por ejemplo, EST)

@event.start_time.in_time_zone(@event.timezone).zone => "EDT"


Creo que estás buscando

Time.find_zone(''Alaska'').local(2011,1,1) => Sat, 01 Jan 2011 00:00:00 AKST -09:00 Time.find_zone(''Amsterdam'').local(2011,1,1) => Sat, 01 Jan 2011 00:00:00 CET +01:00 Time.find_zone(''Sydney'').local(2011,1,1) => Sat, 01 Jan 2011 00:00:00 EST +11:00 Time.find_zone(''Wellington'').local(2011,1,1) => Sat, 01 Jan 2011 00:00:00 NZDT +13:00

Esto también funciona con análisis

Time.find_zone(''Sydney'').parse(''2011-04-12 2pm'') => Tue, 12 Apr 2011 14:00:00 EST +10:00


Esto es lo que uso:

Time.zone.local(2011, 4, 12, 14, 0)