2014-02-11 84 views
2

在我的應用程序中,我將記錄以UTC格式存儲在數據庫中。我只是希望在用戶端顯示這些記錄時結果將根據用戶的時區進行搜索。意思是在發起查詢時我只想根據用戶的時區搜索記錄。MySql和Rails中的時區

回答

0

我想你可以通過你的應用程序的config選項設置時區:

How to change default timezone for Active Record in Rails?

#config/application.rb 
config.time_zone = 'London' 
config.active_record.default_timezone = :local 
+0

我只想當搜尋到數據庫中我想我的查詢將自動轉換對於當地時區而言,它將根據此結果產生結果。 – user3269886

1

爲了顯示不同的時間取決於你所需要從某處抓住他們的區域的用戶。這有幾個選項(他們可能會將其設置在他們的個人資料中,您可能會針對不同的語言使用不同的網址,或者您可能會從他們的會話中獲得)。關於setting the localerails internationalization指南部分有更多信息。

基本上你需要設置I18n.locale是爲用戶的語言環境。這是從指南application_controller.rb的例子(假設你有一個語言環境參數):

before_action :set_locale 

def set_locale 
    I18n.locale = params[:locale] || I18n.default_locale 
end 

然後,一旦你有你需要本地化的實時顯示用戶的語言環境。此外,還有在引導更多的信息,但基本上你需要調用輔助方法localize(別名爲l太):

localize(Time.now) 

l(Time.now) 
1

來顯示不同的時間取決於用戶的瀏覽器time.you可以通過javascript代碼獲取他們的瀏覽器時間(本地時間)並將其存儲到cookie中。然後將時間設置爲rails時區。

確保已安裝jquery.cookie

var browser_time = new Date(); 
$j.cookie('time_zone', browser_time.getTimezoneOffset()) 

添加過濾器之前設置護欄時區

before_filter :set_timezone 

def set_timezone 
    if !request.cookies["time_zone"].blank? 
    min = request.cookies["time_zone"].to_i 
    Time.zone = ActiveSupport::TimeZone[-min.minutes] 
    end 
end