Rails中奇怪的ActiveRecord时区行为



我在巴西,距离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。

相关内容

  • 没有找到相关文章

最新更新