1

我有一个用 RoR 编写的后端,我需要管理来自世界各地不同对等方的许多请求。我有以下问题:

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

    • 如果

      • 假设 2 个请求同时到达我的服务器。两者的时区会不同吗?(意味着,会有两个不同的地方config.timezone吗?)
      • 我找不到任何方法来使用所需的 UTC 设置配置时区,例如Time.zone = 'UTC+X'
    • 如果没有

      • 你知道有什么方法可以轻松正确地管理它吗?我有很多时区操作要做,那么在配置中设置它会更容易。
4

2 回答 2

4

基于对这个问题的回答: 在 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

在“时区转换”下查看

于 2013-02-01T05:54:16.987 回答
1

为每个请求更改不是一个好主意config.timezone,但是是的,应该根据每个请求处理时区。

查看elabs的人员撰写的题为在Ruby on Rails中使用时区的优秀而全面的博文,以获取有关如何处理多个时区的建议。

Ryan Bates 修订版的Time Zones RailsCasts 插曲是另一个很好的资源。

于 2013-02-01T06:37:56.813 回答