2014-02-11 35 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