MySql和Rails中的时区
在我的应用程序中,我以UTC格式在数据库中存储记录。我只希望在用户端显示这些记录时,结果将根据用户的时区进行搜索。意味着在启动查询时,我只想根据用户的时区搜索记录 我认为您可以通过应用程序的MySql和Rails中的时区,mysql,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.2,Mysql,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.2,在我的应用程序中,我以UTC格式在数据库中存储记录。我只希望在用户端显示这些记录时,结果将根据用户的时区进行搜索。意味着在启动查询时,我只想根据用户的时区搜索记录 我认为您可以通过应用程序的config选项设置时区: 要根据用户显示不同的时间,您需要从某处获取他们的区域设置。这里有几个选项(他们可能在他们的个人资料中设置它,您可能有不同语言的不同URL,或者您可能可以从他们的会话中获得它)。有关的指南部分有更多信息 基本上,您需要将I18n.locale设置为用户的区域设置。这是应用程序_co
config
选项设置时区:
要根据用户显示不同的时间,您需要从某处获取他们的区域设置。这里有几个选项(他们可能在他们的个人资料中设置它,您可能有不同语言的不同URL,或者您可能可以从他们的会话中获得它)。有关的指南部分有更多信息 基本上,您需要将
I18n.locale
设置为用户的区域设置。这是应用程序_controller.rb
指南中的示例(假设您有区域设置参数):
然后,一旦您拥有了用户的区域设置,您就需要对时间的显示进行本地化。同样,指南中有更多信息,但基本上您需要调用helper方法localize
(别名也为l
):
或
根据用户的浏览器时间显示不同的时间。您可以通过javascript代码获取他们的浏览器时间(本地时间)并将其存储到cookie中。然后将时间设置为rails时区 确保已安装jquery.cookie
var browser_time = new Date();
$j.cookie('time_zone', browser_time.getTimezoneOffset())
添加before过滤器以设置rails时区
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
我只想在搜索数据库时,我希望我的查询将自动转换为本地时区,然后根据该时区生成结果。
localize(Time.now)
l(Time.now)
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