我的网站部署在 heroku 上。 Time.now 将在今天返回,但记录的 created_at 字段(现在创建)将显示明天。我认为这与服务器时间有关?
有没有办法确保它们相同?
最好的事物,
艾略特
更新所以我做了这个“heroku rake time:zones:us”
它给了我:
* UTC -10:00 *
Hawaii
* UTC -09:00 *
Alaska
* UTC -08:00 *
Pacific Time (US & Canada)
* UTC -07:00 *
Arizona
Mountain Time (US & Canada)
* UTC -06:00 *
Central Time (US & Canada)
* UTC -05:00 *
Eastern Time (US & Canada)
Indiana (East)
但是,当我在我的环境中设置 config.time_zone = 'UTC -05:00' 时,应用程序无法启动。有任何想法吗?
最佳答案
Rails 总是在数据库中存储 UTC 时间; created_at 字段本身应该正好被您的时区相对于 UTC 的变化所抵消。
每当您在应用程序中加载记录时,字段都会转换为 environment.rb 中指定的时区。它可能有这样的东西:
config.time_zone = 'UTC'
为了将时间正确转换为您的时区,您可以将此配置设置更改为与您的实际时区相匹配的设置。例如:
config.time_zone = 'Central Time (US & Canada)'
要查看可用区域,请在您的 rails 目录中发出“rake -D time”。这将为您提供有关如何获取用于配置的时区名称的说明。
关于ruby-on-rails - Time.now 和 Created_at 不同? Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2512450/