首页 > 解决方案 > Rails 中的时区设置

问题描述

我正在尝试将 ActiveRecord 的时区从UTC设置为current time zone。这就是我最终的结果

应用程序.rb

module application
  class Application < Rails::Application
    config.load_defaults 5.2
    config.time_zone = 'Tokyo'.freeze
    config.active_record.default_timezone = :local
  end
end

我已经关闭了服务器并重新启动并创建了一个对象,然后当我检查对象时created_at,似乎 ActiveRecords 仍然根据 UTC 时间而不是Tokyo时间记录数据。

有什么解决方案吗?

标签: ruby-on-rails

解决方案


它总是将 DateTime 的数据记录在数据库中,如果你调用UTC它,它将根据你的调用进行转换config.time_zoneobject.created_at

比方说,它存储2018-09-17 04:41:00Fri, 17 Sep 2018 04:41:00 UTC +00:00数据库中。

如果您将时区配置为,Tokyo那么结果是Fri, 17 Sep 2018 13:41:00 JST +09:00

此外,您可以使用.in_time_zone方法来转换基于该区域的 DateTime。这是.in_time_zone


推荐阅读