【问题标题】:How to change RAILS default timestamp format for created_at field (to store in DB)?如何更改 created_at 字段的 RAILS 默认时间戳格式(存储在数据库中)?
【发布时间】:2013-10-13 20:42:19
【问题描述】:

我看到很多类似的问题,但他们都倾向于关注视图部分而不是数据库部分。假设您的客户需要将 created_at 字段保存在特定的本地时区,例如 EST。

默认情况下,rails 会将其保存在数据库中

2013 年 10 月 13 日星期日 20:35:47 +0000

我需要改变行为,以便它保存这个:

2013 年 10 月 13 日星期日 16:35:47 +0000

【问题讨论】:

    标签: ruby-on-rails ruby time


    【解决方案1】:

    您可以在config/application.rb 中配置 ActiveRecord 将考虑的时区。例如,您可以添加以下内容:

    config.time_zone = 'Eastern Time (US & Canada)'
    config.active_record.default_timezone = 'Eastern Time (US & Canada)'
    

    来自official guides

    • config.active_record.default_timezone判断是否使用 Time.local(如果设置为 :local)或 Time.utc(如果设置为 :utc) 从数据库中提取日期和时间。默认为 :utc Rails,虽然 Active Record 在外部使用时默认为 :local 导轨。

    • config.time_zone 设置应用程序的默认时区和 为 Active Record 启用时区感知。

    【讨论】:

    • 谢谢阿吉斯。我可能还有其他问题。在我的 application.rb 文件的答案中添加了这两行之后,Rails 用 localtime - 4 小时填充了 created_at 字段。因此,如果我在美国东部标准时间下午 6 点添加了一条记录,它会将记录 created_at 记录为下午 2 点。此外,由于您的答案中有两行代码,我的默认显示所有记录视图停止显示 created_at 字段,它现在显示为空白。
    猜你喜欢
    • 2021-01-16
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多