2014-01-22 215 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)