【发布时间】:2016-02-02 20:43:31
【问题描述】:
出于兼容性原因,我需要在服务器的本地时区中存储和显示所有日期。为此,我在application.rb 中配置了这样的rails 应用程序:
# Do not convert database DATETIME / DATE columns to UTC:
config.active_record.default_timezone = :local
当我存储它们存储在服务器本地时区中的日期时,它可以正常工作。但是在检索数据时,Rails 会将其转换为 UTC,例如 Post.find(1).posted 返回 2016-02-02 18:06:48 UTC 但它实际上在数据库中存储为 2016-02-02 13:06:48。
如何防止 Rails 将其转换为 UTC?
我认为将应用程序时区设置为服务器的本地时区会有所帮助,所以我想将config.time_zone 设置为服务器的本地时区并尝试:
config.time_zone = Time.now.zone
但它的问题是它返回一个三字符的时区代码,如 COT,而 config.time_zone 需要一个时区名称,如 Bogota
如何将三个字符代码转换为完整的时区名称?或者,如何获取本地时区名称?或者,如何将 Rails 配置为不将数据库日期转换为 UTC?
【问题讨论】:
标签: ruby-on-rails ruby date datetime