我在巴西,距离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
正如您所看到的,问题是Rails Time类正确地计算出我的localzone(来自我的系统时钟),但ActiveRecord以某种方式弄错了。我想知道为什么ActiveRecord错误地指出我的时区是BRST(右边是BRT),即使我没有做任何配置。
答案 0 :(得分:2)
根本没有弄错。它意识到你在巴西时区,并且在2000-01-01 11:15:26 UTC,巴西时区是BRST,即UTC-2。
在the year 2000中,BRST - > BRT过渡时间是2月26日。
您需要了解您的时区不是真正的“BRT”或“BRST” - 它是两者的组合,包括它们之间的过渡。所以例如我在英国。我们目前正在使用GMT,我们将在夏季过渡到BST - 因此夏季时间值的正确输出将是BST,UTC + 1。