【发布时间】:2023-04-06 16:44:01
【问题描述】:
在application.rb 中,它说:
将 Time.zone 默认设置为指定区域并制作 Active Record 自动转换到该区域。 运行“rake -D time”以获得查找时区名称的任务列表。 默认为 UTC。
但设置 config.time_zone = 'Central Time (US & Canada)' 或 config.time_zone = 'Eastern Time (US & Canada)' 没有效果 - 模型中的 created_at 字段仍以 UTC 格式保存。
config.time_zone 只是让 Rails 知道 您的服务器设置为此 时区,所以当它写入日期时 它可以正确转换的数据库 它到 UTC。
如果这是真的,那么为什么当我的系统时间是 Pacific Time (US & Canada) 和 config.time_zone = 'Central Time (US & Canada)' 或 config.time_zone = 'Eastern Time (US & Canada)' 时,created_at 时间是正确的 UTC?应该不会错吧?!
因为,如果 PST 时间是晚上 8 点,那么 EST 是晚上 11 点,UTC 是凌晨 4 点。
假设 Rails 执行Time.now,那就是晚上 8 点。我们告诉 Rails 服务器在 EST 中。因此,就 Rails 而言,晚上 8 点将是美国东部标准时间,然后 UTC 将是世界标准时间上午 5 点,这是不正确的(因为实际时间是太平洋标准时间晚上 8 点/美国东部标准时间晚上 11 点,即世界标准时间上午 4 点)
这是怎么回事?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3