Time.now和Created_at有什么不同?Ruby on Rails

Ell*_*iot 11 ruby-on-rails

我的网站部署在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)
Run Code Online (Sandbox Code Playgroud)

但是,当我在我的环境中设置config.time_zone ='UTC -05:00'时,应用程序无法启动.有任何想法吗?

Roa*_*ter 16

Rails总是将UTC时间存储在数据库中; created_at字段本身应该相当于您的时区相对于UTC的变化.

无论何时在应用程序中加载记录,字段都会转换为environment.rb中指定的时区.它可能有这样的东西:

config.time_zone = 'UTC'
Run Code Online (Sandbox Code Playgroud)

要将时间正确转换为您的时区,您可以将此配置设置更改为与实际时区匹配的设置.例如:

config.time_zone = 'Central Time (US & Canada)'
Run Code Online (Sandbox Code Playgroud)

要查看可用区域,请在rails目录上发出"rake -D time".这将为您提供有关如何获取时区名称以供配置使用的说明.