Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql和Rails中的时区_Mysql_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 3.2 - Fatal编程技术网

MySql和Rails中的时区

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

在我的应用程序中,我以UTC格式在数据库中存储记录。我只希望在用户端显示这些记录时,结果将根据用户的时区进行搜索。意味着在启动查询时,我只想根据用户的时区搜索记录

我认为您可以通过应用程序的
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