gpt4 book ai didi

ruby-on-rails - Rails : Set config. time_zone 到服务器的时区?

转载 作者:数据小太阳 更新时间:2023-10-29 09:01:14 25 4
gpt4 key购买 nike

出于兼容性原因,我需要在服务器的本地时区中存储和显示所有日期。为此,我在 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?

最佳答案

只需输入“Bogota”作为 config.time_zone 的字符串并将 config.active_record.default_timezone 设置为 :local 你应该得到你需要什么。本地时区中的 DB(我希望是 Bogata 的 TZ)以及 Bogata 的 TZ 中的模型属性。

更新

根据评论,OP 希望能够在操作系统级别设置 Ubuntu 中的时区,然后使用该设置配置 Rails,而无需任何额外步骤。

@Sergio,好消息是您可以config.time_zone 设置为the IANA timezone name您在使用 Ubuntu 工具时会很熟悉,即。你可以做:

config.time_zone = "America/Bogota"

所以你需要做的就是弄清楚如何从你的操作系统中获取它,我认为它应该是 /etc/timezone 的内容,所以:

config.time_zone = File.read("/etc/timezone").chomp

关于ruby-on-rails - Rails : Set config. time_zone 到服务器的时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35163429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com