的Rails,ActiveRecord的和MySQL將保存UTC的所有時間戳字段。沒有你必須做任何事情。
在您的application.rb
文件中完成了應用程序的配置,如果要顯示時間戳的顯示時區與UTC不同,請定義默認時區。
因此
config.time_zone = 'Central Time (US & Canada)'
將顯示時間戳字段(您無需做任何其他的代碼特殊),使用中部時間。
當您希望每個用戶在不同時區顯示時間戳時,可以將時區存儲在用戶數據旁邊的一列中。該列可以稱爲time_zone
,並且可以包含用戶首選時區的字符串。
但是,您必須告訴timestamp對象將其自身顯示到特定的時區。這是在DateTime對象響應的方法in_time_zone(timezone)
的幫助下完成的。
示例(當使用默認的時區爲UTC):
1.9.3-p194 :004 > d = DateTime.new(2012, 9, 1, 6, 30, 0)
=> Sat, 01 Sep 2012 06:30:00 +0000
1.9.3-p194 :005 > d.in_time_zone("Central Time (US & Canada)")
=> Sat, 01 Sep 2012 01:30:00 CDT -05:00
或者你可以在全球範圍內的手放在一個之前或周圍過濾器更改時區的請求。在互聯網上有一個文檔,如果你做了一個谷歌。
另請參閱這一個:http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html 爲解決問題的各種替代方案。
另請參閱http://stackoverflow.com/questions/1048937/how-do-i-change-the-zone-offset-for-a-time-in-ruby-on-rails –