Rails:默认打印UTC时间

时间:2014-01-22 22:12:47

标签: ruby-on-rails ruby timezone

我有一个非ActiveRecord服务器,它将数据发送到另一个服务。该服务器希望以格式"%Y-%m-%d %H:%M:%S.%L"接收包括UTC的指令。我已经有一个覆盖Time::DATE_FORMATS[:default]的time_format.rb初始值设定项有没有办法配置我的服务器,以便Time.now.to_s默认打印UTC时间,而不必每次都指定Time.now.utc我叫它?我正在使用ruby 2.0.0和Rails 4。

我尝试将config.time_zone = 'London'添加到config/application.rb,但这不起作用。

2 个答案:

答案 0 :(得分:0)

我不认为ActiveRecord应该与它有任何关系,但也许我误解了。像Sergio说的那样,将你的应用程序时区设置为UTC。

这是我的Rails应用程序。我的电脑在PST。我的Rails应用程序设置为UTC。

 > Time.now
 => 2014-01-22 21:52:38 -0800
 > Time.zone.name
 => "UTC"
 > Time.zone.now
 => Thu, 23 Jan 2014 05:52:43 UTC +00:00
 > Time.now.utc
 => 2014-01-23 05:52:45 UTC

我强烈建议不要覆盖Time.now。这只能导致黑暗面。

答案 1 :(得分:0)

适用于任何Ruby应用程序的通用解决方案:

module TimeClassExtensions
  def now
    super.utc
  end
end

Time.singleton_class.prepend(TimeClassExtensions)