幾乎每個environment.rb
,都有一個config.time_zone = 'UTC'
的行。在什麼條件下我想在rails中設置不同的應用程序級時區?
這條線究竟做了什麼,在什麼情況下我想改變它(例如,config.time_zone = 'EST'
)?
幾乎每個environment.rb
,都有一個config.time_zone = 'UTC'
的行。在什麼條件下我想在rails中設置不同的應用程序級時區?
這條線究竟做了什麼,在什麼情況下我想改變它(例如,config.time_zone = 'EST'
)?
設置config.time_zone
更改了Rails應用程序的默認時區。這是所有時間的時區都會顯示給您的用戶。這也是它在設置屬性時所採用的時區。
但是,Rails將始終將UTC中的時間存儲在數據庫中。翻譯發生在幕後(大部分時間),您不必擔心它。
將此時區更改爲大多數用戶所在的時區是很常見的。您可以運行此rake任務以查看您可以選擇的所有時區。
rake time:zones:all
這也是很容易改變當前時區上的每個請求允許每個用戶配置他們是在哪個時區。這裏有一個過濾器實例之前,你可能會添加到應用程序控制器。
before_filter :set_user_time_zone
private
def set_user_time_zone
Time.zone = current_user.time_zone if logged_in?
end
請參閱this Railscasts episode瞭解更多信息。
只爲Ryan的優秀答案補充一點。如果你想將它設置爲美國東部時間,它不會是
config.time_zone = 'EST'
這將是
config.time_zone = 'Eastern Time (US & Canada)'
使用以下時區之一,以獲得可用選項的列表:
rake time:zones:all
rake time:zones:local
rake time:zones:us