2009-07-22 11 views
8

In questo momento ho:trasformare il tempo in ora locale in Ruby on Rails

Time.strftime("%I:%M%p") che mi dà il formato hr:min AM/PM cui ho bisogno. Comunque sta tornando in UTC e ho bisogno del fuso orario locale.

Come si modifica il fuso orario locale e si mantiene lo stesso formato per il tempo?

+3

i desidero che il titolo di questo articolo venga modificato per riflettere che l'autore ha chiesto informazioni su Time not DateTime. Ciò sta portando a risultati di ricerca fuorvianti. Sono arrivato da google pensando che si trattava di cambiare un oggetto DateTime all'ora locale cercando 'datetime locale in rail' –

risposta

11

Inoltre, ricorda che a partire da Rails 2.1, i fusi orari sono supportati.

nella configurazione/file di environment.rb:

config.time_zone = 'UTC' 

Puoi trovare altri valori eseguendo

rake time:zones:local 

e Ryan Bates ha una grande Railscast su di esso: http://railscasts.com/episodes/106-time-zones-in-rails-2-1

7

In genere dovrebbe funzionare. Si può avere il vostro fuso orario impostato correttamente, però:

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" 

Questo può essere influenzata dalla variabile TZ ambiente, le tue impostazioni locali del sistema operativo, o la configurazione di Rails in environment.rb.