0

我在巴西,距世界标准时间 -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 类正确地计算出我的本地区域(从我的系统时钟),但 ActiveRecord 不知何故弄错了。我想知道为什么 ActiveRecord 错误地指出我的时区是 BRST(右边是 BRT),即使我没有进行任何配置。

4

1 回答 1

2

它根本没有弄错。它意识到您在巴西时区,并且在 2000-01-01 11:15:26 UTC,巴西时区在 BRST,即 UTC-2。

2000 年,BRST -> BRT 过渡是在 2 月 26 日。

您需要了解您的时区并不是真正的“BRT”或“BRST”——它是两者的组合,包括它们之间的转换。例如,我在英国。我们目前处于格林威治标准时间,我们将在夏季过渡到 BST - 因此夏季时间值的正确输出将是 BST,UTC+1。

于 2013-02-25T14:00:13.413 回答