我在巴西,距离UTC还有-3小时。我没有在Rails中对时区进行任何配置,我的控制台行为很奇怪,下面是示例:
1.9.3p194 :099 > FreeTime.first.starts_at
=> 2000-01-01 11:15:26 UTC
1.9.3p194 :100 > FreeTime.first.starts_at.localtime
=> 2000-01-01 09:15:26 -0200
1.9.3p194 :101 > FreeTime.first.starts_at.localtime.zone
=> "BRST"
1.9.3p194 :102 > Time.now
=> 2013-02-25 10:24:51 -0300
1.9.3p194 :103 > Time.now.zone
=> "BRT"
1.9.3p194 :104 > Time.zone
=> (GMT+00:00) UTC
正如您所看到的,问题是RailsTime类(根据我的系统时钟(正确地计算出了我的localzone,但ActiveRecord不知何故弄错了。我想知道为什么ActiveRecord错误地认为我的时区是BRST(右边是BRT(,尽管我还没有做任何配置。
它根本没有出错。它意识到你在巴西时区,在2000-01-01 11:15:26 UTC,巴西时区在BRST,即UTC-2。
在2000年,BRST->BRT的过渡是在2月26日。
你需要明白,你的时区并不是真正的"BRT"或"BRST",而是两者的结合,包括它们之间的转换。例如,我在英国。我们目前在格林尼治标准时间,我们将在夏天过渡到英国夏令时——所以夏天时间值的正确输出应该是英国夏令时,UTC+1。