我有一个用RoR编写的后端,我需要管理来自世界各地不同同行的许多请求。我有以下问题:
更改每个请求的config.timezone
是否合适?
如果是:
config.timezone
?)Time.zone = 'UTC+X'
如果否:
答案 0 :(得分: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
在“时区转化”下查看
答案 1 :(得分:1)
为每个请求更改config.timezone
不是一个好主意,但是,应根据请求处理时区。
查看优秀& Ruby on Rails的人们在elabs中使用时区来处理时区,以获取有关如何处理多个时区的建议。
Ryan Bates的修订版Time Zones RailsCasts episode是另一个很好的资源。