为什么我得到相同的输出DateTime.now.in_time_zone(-4)和DateTime.now.in_time_zone(-3)

时间:2018-07-11 14:22:33

标签: ruby-on-rails ruby

结果:

> DateTime.now.in_time_zone(-3)
=> Wed, 11 Jul 2018 11:33:00 -03 -03:00 

似乎与此相同:

> DateTime.now.in_time_zone(-4)
=> Wed, 11 Jul 2018 11:33:02 ADT -03:00 

为什么我在两个不同的时区获得相同的时间?

1 个答案:

答案 0 :(得分:4)

如果您查看in_time_zone源代码,则它依赖于Time.find_zone!

Time.find_zone!(-3) #=> "Brasilia"
Time.find_zone!(-4) #=> "Atlantic Time (Canada)"

由于时间变化的奇妙(讽刺?),巴西利亚和大西洋时间在-3处于同一时间:

https://www.timeanddate.com/time/zone/brazil/brasilia enter image description here https://www.timeanddate.com/time/zone/canada/halifax enter image description here