2009-07-22 10 views
8

Gerade jetzt Zeit in die lokale Zeit in Ruby verwandeln ich habe:on Rails

Time.strftime("%I:%M%p"), die mir das hr:min AM/PM Format gibt, das ich brauche. Aber es kommt zurück in UTC und ich brauche es lokale Zeitzone.

Wie kann ich die lokale Zeitzone ändern und das Format für die Zeit beibehalten?

+3

i Ich wünschte, der Titel dieses Artikels würde geändert werden, um anzuzeigen, dass der Autor nach Time und nicht nach DateTime gefragt hat. Dies führt zu irreführenden Suchergebnissen. Ich bin von Google hierher gekommen, weil ich dachte, dass es darum geht, ein DateTime-Objekt in die lokale Zeit zu ändern, indem ich "local datetime in rails" suche. –

Antwort

11

Denken Sie auch daran, dass ab Rails 2.1 TimeZones unterstützt werden.

in Ihre config/environment.rb Datei:

config.time_zone = 'UTC' 

Sie andere Werte, indem Sie

rake time:zones:local 

Und Ryan Bates hat eine große Railscast auf ihm finden können: http://railscasts.com/episodes/106-time-zones-in-rails-2-1

7

Im Allgemeinen sollte das funktionieren. Sie können Ihre Zeitzone, obwohl falsch eingestellt haben:

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" 

Dies kann durch die Umgebungsvariable TZ betroffen sein, Ihre OS Locale-Einstellungen oder Rails-Konfiguration in environment.rb.