2009-07-22 4 views
8

Ahora mismo tengo:transformar el tiempo en el horario local de Ruby on Rails

Time.strftime("%I:%M%p") que me da el formato hr:min AM/PM la que necesito. Sin embargo, está regresando en UTC y lo necesito en la zona horaria local.

¿Cómo puedo cambiarlo a la zona horaria local y mantener el mismo formato por tiempo?

+3

i desearía que se cambiara el título de este artículo para reflejar que el autor preguntó por Hora, no por Fecha y hora. Esto está llevando a resultados de búsqueda engañosos. Llegué aquí desde Google pensando que se trataba de cambiar un objeto DateTime a la hora local buscando 'datetime local en rieles' –

Respuesta

11

Además, recuerde que a partir de Rails 2.1, las zonas horarias son compatibles.

en su archivo config/environment.rb:

config.time_zone = 'UTC' 

se pueden encontrar otros valores mediante la ejecución de

rake time:zones:local 

y Ryan Bates tiene una gran Railscast en él: http://railscasts.com/episodes/106-time-zones-in-rails-2-1

7

En general, eso debería funcionar. Es posible que tenga su zona horaria establece de forma incorrecta, sin embargo:

Time.now.strftime("%I:%M%p") # => "12:48PM" 
Time.now.utc.strftime("%I:%M%p") # => "04:48PM" 
Time.now.utc.getlocal.strftime("%I:%M%p") # => "12:48PM" 
Time.now.zone # => "EDT" 

Esto puede verse afectada por la variable de entorno TZ, la configuración de la configuración regional del sistema operativo o la configuración de los carriles en environment.rb.