【问题标题】:When is it appropriate to use Time#utc in Rails 2.1?什么时候适合在 Rails 2.1 中使用 Time#utc?
【发布时间】:2008-09-19 04:10:24
【问题描述】:

我正在开发一个 Rails 应用程序,该应用程序需要处理用户时区中的日期和时间。我们最近将它迁移到 Rails 2.1 并添加了时区支持,但是在很多情况下我们使用 Time#utc 然后与那个时间进行比较。这与与原始 Time 对象进行比较不一样吗?

什么时候适合在 Rails 2.1 中使用 Time#utc?什么时候不合适?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    如果您已设置:

    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来检测区域

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      如果您的应用程序有多个时区的用户,您应该始终以 UTC 存储时间(任何时区都可以,但您应该坚持最常见的约定)。

      让用户输入本地时间,但转换为 UTC 存储(和比较,和操作)。然后,从 UTC 转换回来以显示在每个用户的本地时区。

      【讨论】:

        猜你喜欢
        • 2011-09-13
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-28
        • 2019-09-17
        • 2019-08-25
        相关资源
        最近更新 更多