2013-02-01 34 views
1

我有一个用RoR编写的后端,我需要管理来自世界各地不同同行的很多请求。我有以下问题:在rails中正确管理时区

  • 是否适合为每个请求更改config.timezone

    • 如果

      • 假设2个请求在同一时间我的服务器上到达。两者的时区会不同吗? (手段,将有有两个型动物config.timezone?)
      • 我没有发现任何方式设定所需的UTC的配置时区,像Time.zone = 'UTC+X'
    • 如果没有

      • 你知道任何方式来轻松和正确地管理它吗?我有很多时区操作要做,然后在配置中设置它会更容易。
      • 基础上回答这个问题

回答

4

Convert Time from one time zone to another in Rails

好像使用config.timezone是由于线程问题是一个坏主意。

我会推荐使用ActiveSupport TimeZone和TimeWithZone类。 这可以让你的线沿线做的事情:

# Return the simultaneous time in Time.zone or the specified zone 
Time.now.in_time_zone      # => Tue, 13 Jul 2010 01:20:55 EDT -04:00 
Time.now.in_time_zone(Time.zone)   # => Tue, 13 Jul 2010 01:20:55 EDT -04:00 
Time.now.in_time_zone("Asia/Vladivostok") # => Tue, 13 Jul 2010 16:20:55 VLAST +11:00 
Time.now.in_time_zone(-3.hours)   # => Tue, 13 Jul 2010 02:20:55 BRT -03:00 

# Switch to a given timezone within a block 
Time.use_zone "Asia/Vladivostok" do 
    Time.zone.now # => Tue, 13 Jul 2010 16:20:55 VLAST +11:00 
end 

示例代码是从http://ofps.oreilly.com/titles/9780596521424/active-support.html

采取下“时区转换”

+0

我没有找到如何改变Time.zone与UTC偏移,如'Time.zone =“UTC + X”' –

+0

最后找到它:'Time.zone = X'。只是。 –

1

不是一个好主意,看看改变config.timezone每个请求,但是,时区应按每个请求处理。

查看出色的&全面的博文,标题为Ruby on Railselabs提供关于如何处理多个时区的建议。

瑞安贝茨的Time Zones RailsCasts episode修订版是另一个很好的资源。

+0

我应该使用'around_filter',thx。 –