Ruby on Rails更改应用程序的时区

时间:2012-12-26 18:58:22

标签: ruby-on-rails ruby activerecord timezone mongoid

我的应用程序已在UTC时区运行超过6个月。这意味着所有ActiveRecord和MongoDB对象都已在UTC时区中创建。很奇怪,如果我继续并在application.rb中更改适用的设置:

config.time_zone = 'Eastern Time (US & Canada)'

这会将以UTC创建的记录转换为EST时区吗? MongoDB记录怎么样? (我使用Mongoid作为我的Ruby驱动程序)。它是否像在application.rb中翻转开关一样简单,就是这样吗?

1 个答案:

答案 0 :(得分:3)

无论config.time_zone说什么,ActiveRecord都会以UTC存储所有内容;我很难找到关于此的权威参考,到目前为止我发现的最好的是ActiveRecord::Timestamp文档。 MongoDB should also be storing everything in UTC

  

<强>日期

     

BSON Date是一个64位整数,表示自Unix纪元(1970年1月1日)以来的毫秒数。官方BSON规范将BSON日期类型称为UTC 日期时间

因此,您的数据库中的任何内容都不应更改或需要更改。 config.time_zone设置仅用于Rails方面,它与数据库中使用的时区无关,因此您不必担心任何问题。