在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点将是EST时间,然后UTC将是UTC时间上午5点,这将是不正确的(因为实际时间是太平洋标准时间晚上8点/美国东部时间晚上11点,即UTC时间上午4点)
这里发生了什么?