【发布时间】:2011-09-23 15:51:40
【问题描述】:
我知道那里有几十个类似的问题,更不用说 Internet 上的无数文章了,但我仍然很难理解 Rails 如何在内部使用时区。
我目前在我的应用程序文件中配置了config.time_zone = 'Eastern Time (US & Canada)',因为这是我和其他项目管理员所在的位置。拥有该站点的公司位于加利福尼亚州,因此他们将在太平洋时间。该应用程序拥有全球用户,虽然我们还没有这样做,但我们最终将实施用户首选时区。
所以我目前的问题:
我知道 Rails 在分别存储和检索时会神奇地将 datetime 列值转换为 UTC 和从 UTC 转换,但是查看给定 datetime 属性的本地版本的正确方法是什么?
什么时候会使用
Time.now、Time.zone.now、Time.now.in_time_zone、DateTime.now、DateTime.now.in_time_zone?将给定的日期时间属性与上面列出的方法或相对于当前配置的时区的其他特定时间进行比较的正确方法是什么?与UTC?
我们会有一些时间敏感的东西,比如需要根据应用程序的时区在特定时间发布的文章,那么我如何让应用程序在我们指定的时区而不是当前配置的一个(假设实现了用户时区?)
(新问题)如果我以后将
config.time_zone更改为UTC会怎样?我是否必须重置数据库中的所有时间,否则会影响旧时间吗?
【问题讨论】:
-
这是个好问题;我还没有找到关于正确实施时区的好文档。我会在列表中添加两个问题:
6. Is Rails sensitive to Daylight Savings Time and/or how do you implement time zone support that is sensitive?和7. Is there a difference between how Rails handles time zones and DST for date columns vs. datetime columns?,也许还有8. Is this database agnostic or does it need to be handled differently for SQLite vs. MySQL vs. others? -
@Clay:你能找到关于这些问题的更多信息吗?我仍在寻找有关该主题的更多信息。
-
我没有找到太多好的信息。使用时区很容易成为我正在使用的爱好应用程序中最令人沮丧和最耗时的部分。我问的这个问题有一个很好的回答:stackoverflow.com/questions/8466903/… 但它只与 postgres 相关。
标签: ruby-on-rails-3 datetime comparison timezone