在rails控制台中:
> ActiveSupport::TimeZone['Samoa'].utc_offset
=> -39600
> ActiveSupport::TimeZone['Samoa'].now.utc_offset
=> 50400
我希望看到基于夏令时的差异,也许是一小时。 为什么这里有巨大的差异?
<小时/> 更新:
Samoa
是唯一具有此行为的时区。很容易找到:
ActiveSupport::TimeZone
.all
.select{|tz| (tz.now.utc_offset - tz.utc_offset).abs/(3600) > 1}
答案 0 :(得分:4)
2011年12月29日,萨摩亚时区跨越国际日期变更线。 https://en.wikipedia.org/wiki/Samoa_Time_Zone
因此,zone.utc_offset值是针对2011年12月29日之前的值,并且在此之后的任何时间都适当调整了utc_offset。
> ActiveSupport::TimeZone['Samoa'].parse('2011-01-01').utc_offset
-36000
> ActiveSupport::TimeZone['Samoa'].parse('2015-01-01').utc_offset
50400