在Ruby on Rails中将时间转换为本地时间

现在我有:

Time.strftime("%I:%M%p")给出了我需要的hr:min AM/PM格式。 然而,它将在UTC中重新出现,我需要它在当地时区。

如何将其更改为本地时区并保持相同的时间格式?

此外,请记住,从Rails 2.1开始,支持时区。

在config / environment.rb文件中:

 config.time_zone = 'UTC' 

您可以通过运行找到其他值

  rake time:zones:local 

Ryan Bates有一个很好的轨道广播: http ://railscasts.com/episodes/106-time-zones-in-rails-2-1

通常这应该工作。 但是,您可能错误地设置了您的时区:

 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" 

这可能受TZ环境变量,操作系统区域设置或environment.rb中的Rails配置的影响。