2014-01-22 135 views
0

打印UTC时间我有一个正在发送数据到另一个服务非ActiveRecord的服务器。该服务器期望以格式:"%Y-%m-%d %H:%M:%S.%L"的格式接收包括UTC在内的指令。我已经有一个time_format.rb初始化重写Time::DATE_FORMATS[:default]有没有一种方法,我可以配置我的服务器,以便Time.now.to_s将默认打印UTC时间,没有我每次我叫它时指定Time.now.utc?我正在使用红宝石2.0.0和Rails 4.的Rails:在默认情况下

我试着增加config.time_zone = 'London'config/application.rb,但没有奏效。

+1

如何定义一个名为TIME_NOW新方法,它调用Time.now.utc? – emrahbasman

+0

您可以通过在Time类中重写现在的方法来实现此目的。 –

+1

config.time_zone ='UTC'怎么样? –

回答

0

我不认为应该ActiveRecord的有什么关系呢,但也许我误解。就像塞尔吉奥说的那样,将您的应用程序时区设置为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。那只会导致黑暗的一面。

+0

我希望避免必须明确指定Time.utc,但我找不到任何其他方法。 – julianc

0

通用的解决方案,对于任何Ruby应用程序的工作原理:

module TimeClassExtensions 
    def now 
    super.utc 
    end 
end 

Time.singleton_class.prepend(TimeClassExtensions)