【发布时间】:2008-09-19 04:10:24
【问题描述】:
我正在开发一个 Rails 应用程序,该应用程序需要处理用户时区中的日期和时间。我们最近将它迁移到 Rails 2.1 并添加了时区支持,但是在很多情况下我们使用 Time#utc 然后与那个时间进行比较。这与与原始 Time 对象进行比较不一样吗?
什么时候适合在 Rails 2.1 中使用 Time#utc?什么时候不合适?
【问题讨论】:
标签: ruby-on-rails ruby
我正在开发一个 Rails 应用程序,该应用程序需要处理用户时区中的日期和时间。我们最近将它迁移到 Rails 2.1 并添加了时区支持,但是在很多情况下我们使用 Time#utc 然后与那个时间进行比较。这与与原始 Time 对象进行比较不一样吗?
什么时候适合在 Rails 2.1 中使用 Time#utc?什么时候不合适?
【问题讨论】:
标签: ruby-on-rails ruby
如果您已设置:
config.time_zone = 'UTC'
在您的 environment.rb 中(默认情况下它在那里),然后当 ActiveRecord 存储它们时,时间将自动转换为 UTC。
然后,如果您将 Time.zone(在 application.rb 上的 before_filter 中是通常的位置)设置为用户的时区,所有时间将自动从 utc 存储转换为用户的时区。
请小心 Time.now。
另见:
http://mad.ly/2008/04/09/rails-21-time-zone-support-an-overview/
http://errtheblog.com/posts/49-a-zoned-defense - 你可以使用这里的JS来检测区域
希望对您有所帮助。
【讨论】:
如果您的应用程序有多个时区的用户,您应该始终以 UTC 存储时间(任何时区都可以,但您应该坚持最常见的约定)。
让用户输入本地时间,但转换为 UTC 存储(和比较,和操作)。然后,从 UTC 转换回来以显示在每个用户的本地时区。
【讨论】: